Revamping the numeric classes

Brian Boutel brian@boutel.co.nz
Wed, 07 Feb 2001 18:27:02 +1300


Dylan Thurston wrote:
> 

> 
> These sound great to me.  If Haskell/2 is indeed open to such changes,
> would also be possible to revamp the numeric modules?  As a
> mathematician, I get annoyed by such things as
> 
> * (+) and (-) being lumped in with (*) (doesn't anyone use vector spaces?)
> 
> * the function 'atan2' being mixed in with a bunch of operations very
>   specific to the floating point format in the 'RealFloat' class.
>   Same problem (though less serious) with 'quot', etc., and
>   'toInteger' in the Integral class.
> 
> * Superfluous superclasses: why are Show and Eq superclasses of Num?
>   Not all numeric types have decidable equality.  Think arbitrary
>   precision reals.
> 

Haskell was intended for use by programmers who may not be
mathematicians, as a general purpose language. Changes to make keep
mathematicians happy tend to make it less understandable and attractive
to everyone else.

Specifically:

* most usage of (+), (-), (*) is on numbers which support all of them.

* Haskell equality is a defined operation, not a primitive, and may not
be decidable. It does not always define equivalence classes, because
a==a may be Bottom, so what's the problem? It would be a problem,
though, to have to explain to a beginner why they can't print the result
of a computation.


--brian