And that was never quite resolved.  The biggest itch was with
operators that have no identity, and operators whose codomain is not
the same as the domain (like <, which takes numbers but returns

Anyway, that syntax was

   $sum = [+] @items;

And the more general form was:

   $sum = reduce { $^a + $^b } @items;

Yes, it is called reduce, because "foldl" is a miserable name.

To pick some nits, reduce and fold are different concepts. By definition, reduce doesn't take the initial value, while fold does.

So reduce using fold is something like

   @items || die "horribly";
   foldl &fn, @items[0], @items[1..]

... while fold using reduce is:

   reduce &fn, ($initial, @items)

I think both are useful, depending on the circumstances.


Reply via email to