[Haskell] Num is such a fat and greedy class

Johannes Waldmann waldmann at imn.htwk-leipzig.de
Mon Dec 11 03:50:35 EST 2006

>> class Subtraction a b | a -> b where
>>   (-) :: a -> a -> b
> If you split them up like this, things like quadRoots take an
> unwieldly type signature: [...]

ultimately this leads to a style of programming
where you have a  class Has_f  for each function symbol  f.

then the signature of a function contains
all the (wrapper class) names of all the functions
it intends to call.

This shows that type classes are "just" a means
for expressing implicit parameters to functions
(the parameters are the class methods,
and the (invisible) dictionary transports them).

Their usability still is limited
because all (data and) class and instance declarations are global.
Is there a fundamental (design or implementation) reason for this?
I really sometimes would want to write

let { instance Show Foo where ... } in   show ...


let data Bar = ... in  ...

Compare Java where you can have nested classes and interfaces.
Where of course part of their motivation is
that Java lacks proper (and anonymous) functions.

Best regards,
-- Johannes Waldmann -- Tel/Fax (0341) 3076 6479/80 --
---- http://www.imn.htwk-leipzig.de/~waldmann/ -------

More information about the Haskell mailing list