HELP: restore my faith in Python
Michael Hudson
mwh21 at cam.ac.uk
Sat Mar 4 09:46:36 EST 2000
Moshe Zadka <moshez at math.huji.ac.il> writes:
> [Tim Peters]
> > At the level of the original poster's question, the best IEEE-754
> > conformant answer is "floating point sucks".
>
> That's it. I've given up on trying to understand you. What should
> 1/2 do?
>
> 1. It can't return 0.5 -- floating point sucks
> 2. It can't return Rational(1, 2) -- rational arithmetic blows up
> 3. It can't return 0 -- integer division is confusing
>
> (Note that I do agree on 1 and 3, and you managed to convince me about 2)
>
> i-fear-the-decimal-point-ly y'rs, Z.
In Haskell it doesn't work:
Main> tryme 1 2 where tryme :: Int -> Int -> Int; tryme a b = a / b
ERROR: Illegal Haskell 98 class constraint in inferred type
*** Expression : let {...} in tryme 1 2
*** Type : Fractional Int => Int
The example's a bit contorted because literals *do* get promoted, but
the message is: don't divide `Int's. I think the philosohpy is less
of the principle of least surprise, more of the principle of early
errors, i.e. (/) isn't really meaningful for integers (as you pointed
out) so it's best not to allow it at all - you have to say what you
mean if you want to do this.
Not an option for the programming language that wants to become part
of CP4E, probably.
Cheers,
M.
--
very few people approach me in real life and insist on proving they are
drooling idiots. -- Erik Naggum, comp.lang.lisp
More information about the Python-list
mailing list