On 8/23/05, Ingo Blechschmidt <[EMAIL PROTECTED]> wrote:
> Hi,
>
> (asking because a test testing for the converse was just checked in to
> the Pugs repository [1])
>
> sub foo ($n, *%rest) {...}
>
> foo 13;
> # $n receives 13, of course, %rest is ()
>
> foo 13, foo => "bar";
> # $n receives 13 again, %rest is (foo => "bar")
>
> foo n => 13;
> # $n receives 13, %rest is (), right?
>
> foo n => 13, foo => "bar";
> # $n receives 13, %rest is (foo => "bar"), right?
Yep, that's all correct. Matter of fact, what %rest actually gets has
not been defined. "Maybe %rest mirrors all the named arguments, maybe
it doesn't". I can see a very small utility if it does, but it seems
like it would be faster[1] if it didn't. I think it's fair to say no
here.
[1] Yeah, yeah, premature optimization and whatnot. You always have
the sig (*%hash) if you really want to.
Luke