Luke Palmer <[EMAIL PROTECTED]> writes:

> Hmm, since we're requiring no whitespace between a variable and it's
> subscript, this should be possible:
> 
>     if "Dough" [eqn 4] "Douglas" {...}

  Lisp!  :-)

  Well, almost.  Now this would be lisp-y:

  if $test [$moon.is_waxing ? &infix:< : &infix:>=] $target {...}


  Let us see ... somewhat speculative and probably short-of-the-mark
generalization coming up:


macro infix:[  ($lhs, $op, $rhs)
    is parsed(/(<Perl6.expr>) \] (<Perl6.expr>)/) {
    return {
        $op($lhs, $rhs)
    };
}

  (Precedence?  Err ... the left hand side has already been parsed,
so infix:[ must be of fixed precedence to the left hand side, right?
Damn, I thought I had it ...)

  Then vector operators, like >>+<<, are "really" just simple
[vectorize &infix:+] and similar -- except properly optimized and
presumably with proper precedence.  And, you can write:


if "Dough" [&String::strncmp.assuming(n => 4)] "Douglas" {...}


  Still long.  Oh well.  infix:[eqn, perhaps?  At least that one will
be of fixed precedence.  Right?


macro infix:[eqn  ($lhs, $n, $rhs)
    is equiv(&infix:eq)
    is parsed(/(<Perl6.expr>)
                \]
               (<Perl6.expr but speculatively_equiv(&infix:eq)>)/) {
    return {
        String::strncmp($lhs, $rhs, n => $n)
    };
}



Eirik
-- 
"So this is the Sword of Immortality?  Huh?
 What's it doin' in a CRYPT?!"
   --- John S. Novak, III, quoting an unnamed player

Reply via email to