http://www.perlmonks.org?node_id=1078136


in reply to How to understand chapter 6 of Higher Order Perl?

It doesn't help that the examples are really boring and kind of obfuscated. For instance: sub promise(&) { $_[0] } That's right, that thing does nothing. I find this really annoying.

It doesn't "do nothing". It constructs a 'promise' from an anonymous block.

That is, it takes an anonymous block of code and returns a code reference to it, so that it can be executed at sometime in the future:

sub promise(&) { $_[0] };; ... $later = promise{ say 'Keeping my' };; ... $later->();; ## or just &$later;; Keeping my

In other words, it constructs a callback.

To create an 'infinite' stream of values starting at 123 and incrementing by 2:

sub countFromBy{ my( $from, $step ) = @_; return promise{ $from += $st +ep } };; ... $counter = countFromBy( 123, 2 );; ... say &$counter for 1 .. 10;; 125 127 129 131 133 135 137 139 141 143

Maybe that clarifies things a little for you?


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.