> Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
> Date: 3 Nov 2002 14:58:52 -0000
> From: Smylers <[EMAIL PROTECTED]>
> X-Posted-By: 193.237.84.140
> 
> Michael Lazzaro wrote:
> 
> > Agreed: the value of comparing a boolean with anything else is not
> > particularly sensible in *any* language.
> 
> It isn't particularly unsensible in PHP.
> 
> PHP only has one equality operator.  If its operands are of different
> types then it casts one operand to match the other, choosing these types
> in order of preference:
> 
>   bool
>   int
>   float
>   string
> 
> That means that comparing a bool with something else first casts the
> something else to a bool, so the comparison works:
> 
>   $int = 3;
>   if ($int == true) { echo 'This gets printed.'; }

Perl has a much finer solution.  So, it's possible to express "if
three is equal to two plus one," obviously:

      if 3 == 2 + 1 {...}

But few languages can express "if it is true that three is equal to
two plus one" (though the statements are, in fact, equivalent).
However, Perl can:

      if (3 == 2 + 1) ~~ true {...}

Even more support for making C<true> a unary function.  It's almost
possible to transliterate via markup English logic statements into
Perl:

      "if 'two plus two equals three' is not true..."
      if (2 + 2 == 3) ~~ {not true} {...}

How's that for self-documentation? :)

(I wrote this to remind people that Perl 6 is still beautiful, in
spite of the line-noise that has been so frequent recently.)

Luke

Reply via email to