On Sat, 20 Apr 2002, Daniel S. Wilkerson wrote:

> Everyone I've ever talked to about it agrees that defining things to be a
> negative is just a bad idea.  Consider:
> 
> if (gronk) do_this();
> else do_that();
> 
> versus
> 
> if (not_gronk) do_that();
> else do_this();

But look how well C<unless> reads :)  IMO, C<unless> is one of the best 
readability decisions that Perl ever made.

> It is one of the standard refactoring tricks to replace the second one
> with the first.  The word "has" is in the positive, whereas "but" is a
> negative, but it assigns a positive, even more confusing.

You wouldn't expect

  $foobar but true
 
to actually be false, would you?  So, I wouldn't say assigning a positive 
is all that confusing.

> To assign a compile time property:
> $a is now red;

That uses too many of my precious keystrokes.

> To test a runtime property:
> if ($a has green) {...}

This brings up an interesting point.

  if ($a but green) {...}

doesn't make a lot of sense. Would it be possible to make boolean C<is> 
test both runtime and compile-time properties?  But I suppose that could 
be confusing on the reader....


Luke 

Reply via email to