On Thu, 14 Nov 2002, Jonathan Scott Duff wrote: > On Fri, Nov 15, 2002 at 07:05:26AM +1100, Timothy S. Nelson wrote: > > -------------------------------------------------------------- > > given ($this) { > > when $that_happens { "Have a party" } > > when $that_doesnt_happen { "Sing" } > > all { > > # Do something > > } > > any { > > # Do something else > > } > > some { > > # Do something other > > } > > none { > > # Do something however > > } > > } > > -------------------------------------------------------------- > > So, I was all set to show how this could work with junctions, but then > I realized that I don't understand them well enough, so here's what I > came up with: > > $j0 = $that_happens | $that_doesnt_happen; > $j1 = !$that_happens | !$that_doesnt_happen; > given ($this) { > when $j0 ~~ $that_happens { ... } > when $j0 ~~ $that_doesnt_happen { ... } > when all($j0) { ... } > when any($j0) { ... } > when any($j1) { ... } # "some" Rare, I expect > when none($j0) { ... } > } > > Is that right? Is there a better way? What happens when there's a > junction on either side of a smart match?
No doubt you understand them better than I do. My complete knowledge comes from http://archive.develooper.com/perl6-language@;perl.org/msg10178.html (search for "superpositions"). Since I don't understand what ~~ does, I'm not quite sure I understand your code. I'll be glad when that virtual mug throwing guy gets the documentation for this kind of thing done a bit more, or when synopses for the other sections get done, so I don't have to go hunting for this kind of thing any more :). > > > The basic idea is that you have two "special" variables which I will, > > just for now, call $truecount and $falsecount. Basically, every time one of > > the "when" clauses comes up true, it increments truecount; whenever one comes > > up false, it increments $falsecount. The blocks below the given get evaluated > > under the following conditions > > > > all: $falsecount == 0 > > any: $truecount > 0 > > some: $falsecount > 0 > > none: $truecount == 0 > > -Scott > --------------------------------------------------------------------- | Name: Tim Nelson | Because the Creator is, | | E-mail: [EMAIL PROTECTED] | I am | --------------------------------------------------------------------- ----BEGIN GEEK CODE BLOCK---- Version 3.1 GCS d? s: a-- C++>++++$ US+ P++ L++ E- W+++ N+ w+> M-- V- Y+>++ PGP->++ R(+) !tv B++ DI++++ D+ G e>++ h!/* y- -----END GEEK CODE BLOCK-----