[Python-Dev] RE: Re: PEP 285: Adding a bool type
Gerald S. Williams
gsw@agere.com
Wed, 3 Apr 2002 13:08:13 -0500
Mark McEahern wrote:
> If, as Fredrik says, there's already one obvious way to return True (and
> that's the int 1), then we already have the problem that people will be
> inclined to compare something to this canonical truth in conditional
> statements.
Actually, he wrote "preferred", not "obvious".
I.e.:
def bool(x): return not not x
will return 0 or 1.
but (), [], "", and None also evaluate as false in a logical
context, while most other things evaluate as true.
Having canonical True and False values would lead newcomers
to compare to them. This would work, for example:
DONE = y and (x > y)
...
if DONE is False:
...
On the other hand, this wouldn't (unless y is a boolean):
DONE = (x > y) and y
...
if DONE is False:
...
Of course, it works either way if you replace "DONE is False"
with "not DONE". Or if you replace "y" with "bool(y)".
Since there aren't canonical True/False values, there is
currently an obvious solution: use "not DONE". But "native"
boolean support will lead to mistakes like this unless you
start taking steps to introduce type-safety with operations
involving boolean values. This is definitely going farther
than was intended by the PEP.
-Jerry
-O Gerald S. Williams, 55A-134A-E : mailto:gsw@agere.com O-
-O AGERE SYSTEMS, 6755 SNOWDRIFT RD : office:610-712-8661 O-
-O ALLENTOWN, PA, USA 18106-9353 : mobile:908-672-7592 O-