On Sat, Nov 02, 2002 at 07:07:43AM -0800, Austin Hastings wrote: > I don't recall the terminology, but I believe that "0 but true" is a > value with a "fillintheblank" (attribute?). What happens when you stick > "0 but true" into a bit?
$z = 0 but true; my bit $x = $z; # $x == 0 my bit $x = ?$z; # $x == 1 my bit $x = true $z; # $x == 1 I'm not even particularly upset by this: my bool $x = $z; # $x == 1 But the moment anyone says my bool $true = 1; if x(1,2,3) == $true {...} they're just asking for a world of hurt. I am overstating the case when I say there's no boolean type in Perl. What I really mean is that there is no such thing as a single true "true" value. > > So what is the "official" way to efficiently store the result of a > > boolean expression, for example? If not as a "bit", then what? > > The boolean-ness is a property of the evaluation of a value: if ($a) > .... > > If the $a value has a 'but false' or 'but true' then that wins. If the > $a value is a number, then 0 is false and everything else is true. If > the value is a string, then ..yada yada yada.. > > > If anything, I would suggest a primitive type, "bool", that has no > > promoted type "Bool". It can just be a placeholder -- a "bit" alias > > Of course, a "bool" type would imply true/false values in the language. > And THAT, in turn, implies that it's possible to say: > I don't mind a bool type. But you'll notice I've grabbed the keyword true() to be a unary function. It will not default to "true". Perhaps it should default to "undef". :-) > $.is_plugged_in = true but false; So that probably won't even parse. Larry