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