[Python-Dev] Adding a Rational Type to Python
Guido van Rossum
guido@digicool.com
Mon, 12 Mar 2001 10:09:15 -0500
> Whether or not Python adopts rationals as the default number type, a
> rational() built-in would be a Good Thing. I'd like to see it in 2.1 or
> 2.2.
>
> I think that Python users should be allowed to experiment with it before
> it becomes the default. If I recode my existing programs to use
> rationals and they experience an exponential slow-down, that might
> influence my recommendation to Guido.
Excellent idea. Moshe is already biting:
[Moshe]
> On Mon, 12 Mar 2001, Paul Prescod <paulp@ActiveState.com> wrote:
>
> > Whether or not Python adopts rationals as the default number type, a
> > rational() built-in would be a Good Thing. I'd like to see it in 2.1 or
> > 2.2.
>
> OK, how about this:
>
> 1. I remove the "literals" part from my PEP to another PEP
> 2. I add to rational() an ability to take strings, such as "1.3" and
> make rationals out of them
>
> Does anyone have any objections to
>
> a. doing that
> b. the PEP that would result from 1+2
> ?
>
> I even volunteer to code the first prototype.
I think that would make it a better PEP, and I recommend doing this,
because nothing can be so convincing as a working prototype!
Even so, I'm not sure that rational() should be added to the standard
set of built-in functions, but I'm much less opposed this than I am
against making 0.5 or 1/2 return a rational. After all we have
complex(), so there's certainly a case to be made for rational().
Note: if you call it fraction() instead, it may appeal more to the
educational crowd! (In grade school, we learn fractions; not until
late in high school do we learn that mathematicials call fractions
rationals. It's the same as Randy Paush's argument about what to call
a quarter turn: not 90 degrees, not pi/2, just call it 1/4 turn. :-)
--Guido van Rossum (home page: http://www.python.org/~guido/)