[Python-Dev] PEP 285: Adding a bool type

David Abrahams David Abrahams" <david.abrahams@rcn.com
Sat, 30 Mar 2002 05:57:39 -0500


"Guido van Rossum" <guido@python.org> writ:
>     Dear reviewers:
>
>     I'm particularly interested in hearing your opinion about the
>     following three issues:
>
>     1) Should this PEP be accepted at all.

Depends on the resolution of #2 and #3 ;-)

>     2) Should str(True) return "True" or "1": "1" might reduce
>        backwards compatibility problems, but looks strange to me.
>        (repr(True) would always return "True".)

str(True) must return 'True' or there isn't much point in bothering with
this, IMO.

>     3) Should the constants be called 'True' and 'False'
>        (corresponding to None) or 'true' and 'false' (as in C++, Java
>        and C99).

As a language interoperability guy, I prefer to keep as much precise
correspondence as possible with C++ (and Java), so I vote for
'true'/'false'.

>     Most other details of the proposal are pretty much forced by the
>     backwards compatibility requirement; e.g. True == 1 and
>     True+1 == 2 must hold, else reams of existing code would break.

Guess what other language made that same choice for the same reasons?

>     Minor additional issues:
>
>     4) Should we strive to eliminate non-Boolean operations on bools
>        in the future, through suitable warnings, so that e.g. True+1
>        would eventually (e.g. in Python 3000 be illegal).  Personally,
>        I think we shouldn't; 28+isleap(y) seems totally reasonable to
>        me.

Changing my position somewhat from earlier, I'll vote in my project's
self-interest: I agree with your inclination to allow bool to be
"promoted" to an int in these conditions.

>     5) Should operator.truth(x) return an int or a bool.  Tim Peters
>        believes it should return an int because it's been documented
>        as such.  I think it should return a bool; most other standard
>        predicates (e.g. issubtype()) have also been documented as
>        returning 0 or 1, and it's obvious that we want to change those
>        to return a bool.

I agree again!

      6) Should we eventually remove the inheritance relationship
         between Int and Bool?

I hope so. Bool is-a Int doesn't seem like the right relationship to me,
unless perhaps we make Int is-a Long... naah, not even then.

-Dave