[Python-3000] PEP 31XX: A Type Hierarchy for Numbers (and other algebraic entities)
Talin
talin at acm.org
Mon Apr 30 02:11:44 CEST 2007
Guido van Rossum wrote:
> Maybe we should stop trying to capture radically different
> mathematical number systems using classes or types, and limit
> ourselves to capturing the systems one learns in high school: C, R, Q,
> Z, and (perhaps) N (really N0). The concrete types would be complex <:
> C, float<:R, Decimal<:R, int<:Z. NumPy would have many more. One could
> argue that float and Decimal are <:Q, but I'm not sure if that makes
> things better pragmatically; I guess I'm coming from the old Algol
> school where float was actually called real (and in retrospect I wish
> I'd called it that in Python). I'd rather reserve membership of Q for
> an infinite precision rational type (which many people have
> independently implemented).
I haven't really been following this discussion, given my lack of
understanding of the issues involved, but I want to make one observation
about the discussion.
Normally, when someone suggests an idea for a major addition to Python
of this scope, the standard response is that they should go develop it
as a 3rd-party package and see if becomes popular, and if it does it can
be considered for inclusion in the standard library.
Unfortunately, we are somewhat constrained in this case, because we're
talking about altering the behavior of some fairly fundamental built-in
types - which means that it's going to be hard to implement it as an
add-on library.
And yet, it seems to me that this particular set of features really does
need a long gestation period compared to some others that we've
discussed. Most of the 3000-series PEPs are really about a fairly small
set of base decisions. Even the long PEPs are more about descriptions of
the logical consequences of those decisions than about the decisions
themselves. The ABC PEPs are different, in that they are standardizing a
whole slew of things all at once. Moreover, I think there is a real
danger here of a kind of ivory-tower decision making, isolated from
day-to-day writing of applications to keep them grounded.
The question of whether to limit to the "high school" number classes, or
to go with the more mathematically abstract set of things is a decision
which, it seems to me, ought to be made in the context of actual use
cases, rather than abstract theorizing about use cases. (I'm also
generally supportive about copying what other languages have done, on
the theory that they too have been tested by real-world use.)
If it were technically possible, I would recommend that this PEP have to
run the same gauntlet that any other large library addition would, which
is to go through a long period of community feedback and criticism,
during which a large number of people actually attempt to use the
feature for real work. I also think, in this case, that the special
power of "core python developer fiat" should not be invoked unless it
has to be, because I don't think that there is a firm basis for making
such a judgment yet.
I would also suggest that some thought be given to ways to allow for
experimentation with different variations of this feature. If it is not
possible to make these numeric classes definable in Python at runtime,
then perhaps it is possible instead to allow for custom builds of the
Python 3000 executable with different arrangements and configurations of
these built-in classes.
-- Talin
More information about the Python-3000
mailing list