On 4/19/04 7:16 PM, Larry Wall wrote:
> On Mon, Apr 19, 2004 at 01:44:53PM -0400, John Siracusa wrote:
> : ...named and required, or named and optional?  IOW, is this all true?
> : 
> :     sub foo(+$a, +$b) { ... }
> : 
> :     foo();          # compile-time error!
> :     foo(1, 2);      # compile-time error!
> :     foo(a => 1, 2); # compile-time error!
> :     foo(a => 1);    # compile-time error!
> : 
> :     foo(a => 5, b => 7); # ok
> :     foo(b => 1, a => 2); # ok
> 
> Well, no, we're still stuck at run-time validation of that.  In the case
> of methods you can't really do anything else anyway, generally speaking.

Why is that?

> For subs, we could make the compiler pay attention to something in the
> declaration:
> 
>   sub foo(+$a is req, +$b is req) { ... }
>   sub foo(+$a = fail, +$b = fail) { ... }
> 
> But I still don't think it rates a strange character of its own.

I'd even be willing to type out "is required."  I just want the feature :)
The "is fail" technique looks slightly icky...

> Possibly there's something going on with multi subs and invocants.
> I'm not sure what 6.0.0 will make of a declaration like:
> 
>   multi sub foo(+$a, +$b: +$c) { ... }
> 
> since we've told the Parrot people they don't have to worry about
> anything but positional parameters for 6.0.0.

Can we do some magic behind the scenes that will make "required named
params" look positional to parrot?

-John 

Reply via email to