On 9/7/05, Brent 'Dax' Royal-Gordon <[EMAIL PROTECTED]> wrote:
> Here's a Real Live Perl 6 module I wrote recently.  I've omitted a few
> magic portions of the code for clarity.

Thanks for real live perl 6 code.  It's always nice to have real examples.

However, I'm arguing for logical stability without losing expressive
power.  The case that convinces me is the one where something becomes
a lot harder without lexical junctions.  This one doesn't:

>     module Trace-0.01-BRENTDAX;
> 
>     my $active;
>     ...
> 
>     sub activate(*%newtags) {
>         $active |= any(keys %newtags);
           @active.push(keys %newtags);
>     }
> 
>     sub trace([EMAIL PROTECTED] is copy, *%to is copy) is export {
>         ...
>         if $active eq any('all', keys %to) {
          if any(@active) eq any('all', keys %to) {
>                 ...
>                 print $ERR: @msg;
>                 return [EMAIL PROTECTED] #but true;
>         }
>         return;
>     }

And that is clearer to me at least.  You can tell the nature of the
comparison: that you're checking a list of pattern against a list of
active objects, rather than a list of patterns against a single
object, which is what it looked like before.  YMMV on that angle,
though.

The reason I think that this approach won't lose expressive power is
mostly because of our new Set class.  The one remaining thing is when
you build up a nested junction in terms of ors and ands and check
that, as was given in one of Damian's old examples.  I really haven't
come up with a reason you'd want to do that yet, but I *am* looking. 
I'm not on a mission to destroy junctions, really. I'm just on a
mission to make things make sense. :-/

Luke

Reply via email to