How about adding rational fraction to Python?

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Thu Feb 28 05:39:51 EST 2008


On Thu, 28 Feb 2008 00:30:11 -0800, Dennis Lee Bieber wrote:

> On Thu, 28 Feb 2008 01:25:32 -0000, Steven D'Aprano
> <steve at REMOVE-THIS-cybersource.com.au> declaimed the following in
> comp.lang.python:
> 
>> When it comes to mixed arithmetic, it's just too darn inconvenient to
>> forbid automatic conversions. Otherwise you end up either forbidding
>> things like 1 + 1.0 on the basis that it isn't clear whether the
>> programmer wants an int result or a float result, or else even more
>> complex rules ("if the left operator is an int, and the result of the
>> addition has a zero floating-point part, then the result is an int,
>> otherwise it's an error, but if the left operator is a float, the
>> result is always a float"). Or a proliferation of operators, with
>> integer and floating point versions of everything.
> 
> 	Automatic conversions, okay... but converting a result when all
> inputs are of one time, NO...

What? How does that make any sense?

By that logic, we should see this:

>>> len("a string")
'8'
>>> len([2, 4, 6])
[3]
>>> len({'key': 'value'})
{1: None}



> 	The only rule needed is very simple: promote simpler types to the
> more complex type involved in the current expression (with expression
> defined as "value operator value" -- so (1/2) * 3.0 is INTEGER 1/2,
> resultant 0 then promoted to float 0.0 to be compatible with 3.0).
> 
> 	Very simple rule, used by very many traditional programming
> languages.

And rightly rejected by many other programming languages, including 
modern Python, not to mention calculators, real mathematics and common 
sense.



-- 
Steven



More information about the Python-list mailing list