Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^4: Next Language to Learn

by LanX (Canon)
on Mar 30, 2010 at 15:36 UTC ( #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


Comment on Re^4: Next Language to Learn
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
Node Status?
node history
Node Type: note [id://831881]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (12)
As of 2015-07-30 17:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (273 votes), past polls