On Mon, 6 Dec 2004 11:34:24 -0800, Larry Wall <[EMAIL PROTECTED]> wrote:
> Though it's awfully tempting to fill in the holes in the periodic table:
>
> ($a, $b, $c) = @foo *<< 3;
>
> And then just say all the corresponding unaries default to 1 (or the arity
> of the left):
>
> $bit = +<< $number; # $number +<< 1
> $graph = ~<< $string; # chip()/chimp()
> $whether = ?<< $boolean; # presumably clears $boolean
> $elem = *<< $iterator; # shift $iterator
Well, that's interesting.
> I suppose unary *>> would mean pop. Blurch. Let's stick with the binaries,
> if we add 'em at all. I do think
>
> foo( @bar *<< 3 )
> foo( @bar *>> 3 )
Hrm... if you're thinking of going that way, I'd rather have a
lazy-assignment/destructive-pipe operator of some sort:
($a,$b) <== [EMAIL PROTECTED]; # splice(@bar, 0, 2)
($a, $b) ==> [EMAIL PROTECTED] # splice(@bar, 0, 0, $a, $b)
[EMAIL PROTECTED] ==> ($a, $b); # splice(@bar, -2)
[EMAIL PROTECTED] <== ($a, $b); # splice(@bar, @bar, 0, $a, $b);
Of course, with something indicating the desire to modify the array. I
don't know that [EMAIL PROTECTED] would be right for that, but I dunno. Just an
idea.
I'd want some way of telling the array to lazily add/remove elements
as part of the pipe operator, which would make:
foo <== [EMAIL PROTECTED]; # REMOVE however many elements from the front of
@bar
as foo() wants
However, this would lead to me thinking about this sequence:
[EMAIL PROTECTED] ==> map ==> grep ==> @whatever;
as:
while pop @this { ... unshift @that, $_ }
Which would be interesting (bad) for performance
Ashley