On Thursday, March 6, 2014 4:41:08 PM UTC-6, Chris Angelico wrote:

What does your proposed hierarchy offer that numbers.Number doesn't?

 
I just had one more thought along this line;  consider this:

>>> from pdeclib import *
>>> 
>>> s1=sqrt(2.01)
>>> s1
Decimal('1.41774468787578244511883132198668766452744')
>>> s2=sqrt(d(2.01))
>>> s2
Decimal('1.41774468787578252029556185427085779261123')
>>> 
>>> s1**2
Decimal('2.00999999999999978683717927196994423866272')
>>> s2**2
Decimal('2.01000000000000000000000000000000000000000')
>>> 
>>> 

Which one is right,   s1 or s2 ?

Well, clearly s1 is wrong.  And yet, s1 was coded by giving the system a normal
human number, at a human level, and very innocently s1 is really badly broken
but not immediately noticed until we try to square it...  

s2 on the other hand is correct, but we had to go through some hoops
to make sure that the system received the correct type.  The system should 
be able to make this determination without the user having to determine types.

marcus