--- Brent Dax <[EMAIL PROTECTED]> wrote:
> Austin Hastings:
> # Let's support separable verbs. 
> # 
> # Here's how:
> # 
> # # Note my arbitrary selection of _ as separation indicator. 
> # Feel free to replace this with something more appropriate:
> # 
> # sub if    ($test, &block) 
> #   _ elsif ($test, &block) is optional is floating is multi
> #   _ elsunless ($test, &block) is optional is floating is multi
> #   _ else (&block) is optional is fixed
> 
> How do you name one of these suckers?
> 
> %::{'if'}     #Incomplete, and is there an %::{'elsif'}?
> %::{'if_elsif_elsunless_else'}        #Could conflict with other symbols
> %::{'if _ elsif _ elsunless _ else'}  #Depends on ordering
> 
> Remember, this also has bearing on importing them from a module.
> 

Full name, with full signature. if_elsif_elsunless_else($c,&b,$c,&b,
$c, &b, &b);

Maybe a special widget in the arglist to denote separability? This
could be important for varargs multimethods.

> # {
> #   while (!$args[0].test) shift;
> 
> 1. Where did this $args come from?
> 2. The while syntax is way wrong.
> 3. How does else's test default to 1?
> 
> #   &args[0].block();
> 
> From this, it's obvious you forgot about sigil invariance.

I can't even spell sigil invariance. And I'm nowhere close to sure that
it would be valid to use "while" when in the middle of trying to define
"if". 

I was "backfilling" the innards after writing the 'outards'. Just a
competence fault on my part.

> 
> # }
> # 
> # Where:
> # 
> # 1: I'm hacking real hard on the implementation. Better Ideas
> Welcome.
> # 2: space-underscore-space means "separable bit". Negotiable. BIW.
> # 3: is optional/[dflt: required] means doesn't have to appear.
> # 4: is floating/[dflt: fixed] means can appear in any order.
> # 5: is multi/[dflt: single] means can appear more than once.
> 
> 5 conflicts with multimethods.

s/multi/repeatable/ or whatever. BIW.

> 
> # I think this is one of those p6-ish generalizations:
> # 
> # try/catch/finally
> # do/while
> # if/elsif/elsunless/else
> # repeat/until
> # (arguably: switch/case/default)
> 
> Except that none of the other ones exist in Perl 6.  :^)

Because we have not heretofore had a cool syntax for separable verbs.
Now we do. Now it can be possible to say "use pascal;" and get extra
syntax overhead. Rejoice. :-/

> 
>       try {
>               ...
>               CATCH {
>                       ...
>               }
>       }
> 
>       loop {
>               ...
>               last unless cond;
>       }
> 
>       loop {
>               ...
>               last if cond;
>       }
> 
>       given(topic) {
>               when cond {
>                       ...
>               }
>               
>               default {
>                       
>               }
>       }
> 
> IMHO, separable keywords are in general a bad design, so perhaps they
> should be grammar-munge hard.  We really don't need anything but else
> (and possibly its friends) for our purposes, but we want them
> everywhere, so I don't see why we shouldn't do it this way.

Go us. One step closer to total world domination.

=Austin

Reply via email to