On Mon, 9 Mar 2009, Larry Wall wrote:

> the only difference between C<for> and C<map> is that you can only use
> C<for> at the start of a statement.  But we're more liberal about where
> statements are expected in Perl 6, so you can say things like:
>
>     my @results = do for @list -> $x {...};
>     my @results = (for @list -> $x {...});
>
> and either of those is equivalent to:
>
>     my @results = map -> $x {...}, @list;
>
> I also Officially Don't Care if you use map in a void context. :)

(Good.)

<tongue-in-cheek> Maybe we should just treat "map" as a synonym for "for". 
</tongue-in-cheek>

I'd like to be able to use grep, map, etc in a currying fashion. Can I do:

        my &square_list := -> $x { $x * $x }.map();

And if so, what is the signature of &square_list ?

Maybe that's why there's a difference between "for" and "map"

        @list = @array.map(&code);

        &iterator = &code.for($signature);
        @list = iterator(@list);

But I suspect they should logically be the other way around:

        &iterator = &code.map($signature);
        @list = iterator(@list);

        @list = @array.for(&code);

-Martin

Reply via email to