On Thu, 2002-02-21 at 09:01, Sam Vilain wrote:
> On Thu, 21 Feb 2002 06:50:13 -0600
> [EMAIL PROTECTED] wrote:
> 
> > On Thu, Feb 21, 2002 at 12:30:11PM +0000, Sam Vilain wrote:
> > > I think Perl 6 should have a "but" keyword, as in:
> > > if (defined $foo but $foo eq "") {
> > *scratches head*
> > so... it negates the left side, then ANDs it with the right?
> 
> No, "but" is syntactically equivalent to "and" in English.  It just
> implies that the second condition is not generally what you'd expect if
> the first was true.
> 
> Complete syntactic sugar :)

An off-the-wall thought... If this is not the "expected" condition,
should it have the extra meaning of an assertion? For example,

        defined $foo but $foo eq ""

could set $! to 'defined $foo but $foo eq ""' and, if -w was in use,
issue 'warn "Exceptional condition: $!"'

Perhaps "but" introduces more information than you had thought....

Is there a unary "but"? Or would that be "never"?

Alternatively, this could all be replaced by "should":

        defined $foo && $foo should ne ""

        $foo should == $bar

        should $state

        should not $state

It's not a hard assertion, just a debugging tool.

"should", unlike "but" would probably always force the expression to be
true. So, 'defined $foo && $foo should ne ""' would always be true if
$foo was defined (should "should" become false or die, under "use
strict" or the debugger?)

A stanalone "should not" would be useful for unexpected circumstances
that are not important enough to always issue a warning:

        exec($prog);
        should not;

This brings up the switch idea... (in C terminology because I don't have
time to look up the Perl version right now):

        switch ($x) {
        case 1: break;
        case 2: break;
        default: should not;
        }

Ok, I think I'm rambling now... off to do more work.


Reply via email to