Yukihiro Matsumoto wrote:
> 
>...
> 
> Ah, you mean you believe 5/2 should be 2.5, do you?
> 
> I don't believe it.  Any operation on two exact numbers should not
> result in inexact number, unless explicitly specified.  So 5/2 may
> return 5/2 (rational number) in the future, but not 2.5.

Python may adopt rationals one day also, but the change to having 5/2
return a rational will be much less painful if the code out there
expects it to return a float than if the code expects it to return the
floor. Most code doesn't break when you make it more accurate but
switching from floor division to integer division breaks a lot of code
in an obvious way. The sooner it is done the sooner he can move on to
tackling rationals.

Anyhow, even if Python or Ruby never adopts rationals, I tend to think
that the substitutability principle is more important than the principle
that "any operation on two exact numbers should not result in inexact
number, unless explicitly specified." I would say if you strongly
believe that then the consistent thing to do is disallow all uses of
exact integers in place of floats. You could just as easily extend the
principle to say: "no operation involving an exact number should result
in an inexact number." Then people would be trained that floats and
integers are deeply different and distinct and they wouldn't accidently
pass integers to functions expecting floats.
-- 
Take a recipe. Leave a recipe.  
Python Cookbook!  http://www.ActiveState.com/pythoncookbook