--- Damian Conway <[EMAIL PROTECTED]> wrote:
> Austin Hastings wrote:
>
> >> ?& ?| ?^ - [maybe] C-like bool
> operations
> >> ?&= ?|= ?^= - (result is always just 1 or
> 0)
> >> [?&] [?|] [?^] - (hyperversions)
> >> [?&]= [?|]= [?^]=
> >> [?&=] [?|=] [?^=]
> >
> >
> > Two possible differences between double-[&|] and single-[&|]:
> >
> > 1- Force (unlazy) evaluation of all operands.
> > 2- Force conversion to 1 or 0. (Are "true" and "false" going to be
> > built-in literals, a la java?)
> >
> > Which (or both) of these are supposed to come from the single-op
> > versions of these?
>
> Superpositions don't lazily evaluate their operands (unless those
> operands are themselves superpositions).
Sorry, let me be more explicit: Forget the flexops for now. What's a
C-like boolean single-letter do?
> >> - [maybe] C-like bool operations
> >> - (result is always just 1 or 0)
In the C that I learned, the &^| ops were bitwise.
Likewise, the && || ops were lazy booleans.
So what's a single-letter boolean act like? Is it lazy? Does it retain
its bitwise-ness but (since boolean) force evaluation for 1 or 0 first?
I just don't understand what the "implied" behavior is, since the
reference is outside my experience.
> > $a = 1 | 5;
> > $a &= 10;
> > What's $a?
> >
> > 1 | 5 & 10
>
> Yes (by precedence)
Umm, is this wrong? As I understand it, that's the same as 1 | (5&10)
because of precedence, no?
> > (1|5) & 10
>
> Yes (explcitly).
(With apologies to the folks at "Sesame Street"):
One of these answers isn't like the other ...
One of these answers just doesn't belong ...
> > On the other hand, some of the examples seem counterintuitive. That
> is,
> > considering Damian's:
> >
> > $seen = $start | $finish;
> > for ... -> $line {
> > print "$line\n" unless $line == $seen;
> > $seen |= $line;
> > }
> >
> > I can understand the notion of "unless $line is a-or-b-or-c-or..."
> but
> > I keep THINKING in terms of "I've seen a-and-b-and-c-and..."
>
> That's understandable. So you write:
>
> $seen = $start & $finish;
> for ... -> $line {
> print "$line\n" if $line != $seen;
> $seen &= $line;
> }
Yeah, that's better. Thanks.
> > So when would multiple flexops be combined? Anyone have any real
> world
> > examples, even simple ones?
>
> Sure (for sufficiently complex values of simple ;-)
>
> Here's how to find the love of your life:
>
> $requirements = "tall" & "dark & "handsome"
> | "old" & "rich"
> | "Australian";
>
> for <> -> $candidate {
> my $traits = any( split /<ws>/, $candidate );
> print "True love: $candidate\n"
> if $requirements eq $traits;
> }
>
> Of course, not everyone can hope to be lucky enough to meet an
> Australian, but you get the idea. ;-)
Well, thank God for small favors.
traits = any ( ... )
requirements = .. & ..
if $requirements eq $traits
Should that be traits = all()?
I mean, assuming that the split returns only adjectives, you've got
something like:
"short" & "busty" & "dark" & "nymphomaniac" & "father owns a chain of
liquor stores"
in the requirements
and you've got
a | b | ... | z
in the traits
How do THOSE work together?
(In other words: Can you write Apoc.Flexible now, please?)
=Austin
__________________________________________________
Do you Yahoo!?
HotJobs - Search new jobs daily now
http://hotjobs.yahoo.com/