Miroslav Silovic wrote:
> [EMAIL PROTECTED] wrote:
>
>> 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
>> bools).
>>
>> 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.
>
>
> Miro
>
Something like:
sub *reduce(&func, +$initial = undef, [EMAIL PROTECTED])
{
$value = $initial;
map { $value = &func($value, $_); } <== @list;
return $value;
}
?
Or would this be an array method? I can see wanting to reduce list
literals, in some wierd mostly-tutorial cases, but I can also see
wanting this to be a data structure method to prevent reducing a parse
tree using an array operation...
=Austin