[Python-Dev] Re: PEP239 (Rational Numbers) Reference Implementation and new issues

Guido van Rossum guido@python.org
Tue, 08 Oct 2002 11:09:36 -0400


[Tim]
> Noting that Scheme has two sets of optional numeric literal prefixes:
[...]
> This avoids conflating exactness with representation, and, e.g.,
{...]
> By default, a numeric literal is inexect iff it contains a radix
> point or an exponent, but #e or #i can override that.
[...]
> I think this works very well.  The same rule about default exactness
> would be appropriate for Python too, and an r suffix meaning what a
> #e prefix means in Scheme would be a fine idea by my lights (the
> effect of an #i prefix can be gotten via including a decimal point
> for decimal literals, and inexact literals in other bases are rarely
> useful).

I don't think Python needs the full matrix of exact and inexact
versions of all kind of numbers.  I see not enough need for inexact
ints or rationals, nor for exact floats or complex numbers.  So I'd
like to continue our partition of numeric types as follows:

         exact       |     inexact
 ------------------------------------
  int/long  rational | float  complex

But we can do this, which is pretty much what Tim proposes in the end:

  1   ->  int
  1.0 ->  float

  1r  ->  rational
  1.0r -> rational

If we ever add a fixed-point decimal type, that could use 'f' for a
suffix.  If we ever add a floating-point decimal type (like the one
Aahz is working on -- I mistakenly called it a fixed-point type
before) then it could use 'd' as a suffix, or it could become the
default and we could use 'b' as a suffix to get binary floating point.

But I also agree with a recent trend in this thread: let's not rush
to add syntax.  Let's first add rationals to the library.

I hereby declare this thread closed.  (Ha, ha. :-)

--Guido van Rossum (home page: http://www.python.org/~guido/)