[Fwd: Comment on PEP-0238]
Robert J. Harrison
rjh at 3-cities.com
Sun Jul 8 13:45:43 EDT 2001
Guido van Rossum <guido at digicool.com> wrote in message news:<mailman.994529832.2013.python-list at python.org>...
> > However, I think that some details of the numerics also need to
> > be clarified before you boldly go. Specifically,
> >
> > - What about long division? A float cannot capture all results.
> > Should it raise a Value/Range error?
> > Should the programmer be forced to use divmod?
> > Should it return a rational?
> > I don't really like the last two choices and the first two choices
> > obviate much of the usefulness of longs.
>
> We'll introduce a new operator or function (e.g. div(x, y)) for
> integer division, which will work for ints and longs. When / is used
> and the result can't be expressed as a C double, we can choose between
> yielding Infinity or raising OverflowError; I think probably the
> latter although with two float arguments this currently returns Inf on
> most platforms.
I think this design might hold as an interim approach, but I don't
find it satisfactory to have this forced coercion to double make
division by longs sometimes fail ... it's just not in the spirit of
dynamic typing ... if coercion is forced, it should be to make things
"work better", not fail.
Other thoughts
- Accelerating the consideration of Rationals.
It seems natural to have long division return a rational, and
int division return a float. This way you always know what you
are getting and it will always work. However, ints and longs
are not on an equal footing which is also desirable.
If rationals cannot be considered on the same timescale,
that PEP should be ammended to make it consistent.
At some point in the future the behviour for longs could be
modified ... the ramifications are less wide spread than for int.
- To get ints and longs on an equal footing we could have some
parameter (import or whatever) that defines the type returned
by /. This way you can choose at runtime if you want a float
or something else. This can also be done with the next ...
- Will standard __closed_integer_div__ method names be defined
so that people can define their own integer types?
Robert
More information about the Python-list
mailing list