Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^3: A "Fun"ctional Attempt

by Laurent_R (Canon)
on Jun 05, 2015 at 07:45 UTC ( [id://1129166]=note: print w/replies, xml ) Need Help??


in reply to Re^2: A "Fun"ctional Attempt
in thread A "Fun"ctional Attempt

I must say that I don't fully understand your examples. I need to take more time to study them.

But looking at what comprehensions are (I only had a very vague idea), it seems to me that it would be possible to implement them with the gather and take functions of Perl 6. And it should not be too difficult to implement a gather and take functionality in pure Perl 5. I think that Damian has implemented a CPAN module doing that. The only difficulty might be to make that really lazy, but combining an iterator and gather and take might do the trick.

But I'll look further at your modules this week-end (hopefully), this looks interesting.

Replies are listed 'Best First'.
Re^4: A "Fun"ctional Attempt
by withering (Monk) on Jun 05, 2015 at 10:51 UTC

    Actually there are some implementations for Perl 6 gather and take, for example Perl6::GatherTake. It seems that many interesting features are introduced by Perl 6...

    Comprehensions generate lists. A comprehension consists of generators which offer operands, guards which behave like assertions on the operands, and an expression for computing an element with "legal" operands. Some languages (such as Erlang, Haskell, .etc) have such feature builtin already.

    A comprehension could be derived from some monad comprehension, which implies normal evaluation order among all generators and guards. However, it is beyond the current discussion.

    In HOI::Comprehensions, I generate something like a lazy for-loop - an "iterator", which is composition of function calls, is stored as a string, and evaluated each time a "step" is made. It is a little slow since eval is applied on each computation. Perhaps gather & take is a better idea.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (2)
As of 2026-02-10 08:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.