Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^4: Next Language to Learn

by LanX (Saint)
on Mar 30, 2010 at 15:36 UTC ( [id://831881]=note: print w/replies, xml ) Need Help??


in reply to Re^3: Next Language to Learn
in thread Next Language to Learn

Sorry I didn't intend to criticize you, it's only my personal impression after a long indoctrination...

Me, I'm rather interested to realize different paradigms in Perl, maybe by extending the language.

(even if it provokes the resistance of local clerics... ;)

Cheers Rolf

Replies are listed 'Best First'.
Re^5: Next Language to Learn
by rovf (Priest) on Mar 31, 2010 at 07:37 UTC
    Sorry I didn't intend to criticize you
    I didn't interpret it that way ;-)

    I'm rather interested to realize different paradigms in Perl, maybe by extending the language.
    For instance it would be interesting to see, how easy/clumsy it is to retrofit lazy evaluation into Perl.

    With enough pertinacity, every language can be made to look like LISP :-D

    -- 
    Ronald Fischer <ynnor@mm.st>
      > For instance it would be interesting to see, how easy/clumsy it is to retrofit lazy evaluation into Perl.

      E.g.you can tie an iterator to a variable.

      I'm not fluent in Haskell, so gimme an example and I'll see what's possible.

      > With enough pertinacity, every language can be made to look like LISP :-D

      Well, unfortunately it's not trivial to realize LISPish macros in Perl 5, otherwise most language extensions I can think of would be easily possible.

      Compare Re^2: Dumping variables but DRY and simple for a use case for a macro.

      Cheers Rolf

        > For instance it would be interesting to see, how easy/clumsy it is to retrofit lazy evaluation into Perl. E.g.you can tie an iterator to a variable. ... gimme an example and I'll see what's possible.
        Good point.

        For example, we have a function which generates the list of all even numbers, i.e.

        sub list_all_even { _list_all_even_from(0) } sub _list_all_even_from { my $from=shift; ($from, _list_all_even_from($from+2)) }
        and a function which returns the first n elements from a list:
        sub head { my ($n,@list)=@_; $n ? ($list[0],head($n-1,butfirst(@list))) : () } sub butfirst { shift; @_ }

        Calling head(5,list_all_even) should return the first even numbers, but in the implementation I gave, list_all_even would, of course, loop forever. Under lazy evaluation, list_all_even would only produces those values which are actually needed, so maybe your general idea of using an operator would lead in the right direction...
        -- 
        Ronald Fischer <ynnor@mm.st>

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://831881]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (5)
As of 2024-04-25 10:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found