[Haskell-cafe] Non-exported type classes?

Stefan O'Rear stefanor at cox.net
Sat Mar 3 19:13:14 EST 2007


On Sun, Mar 04, 2007 at 01:03:45AM +0100, Roberto Zunino wrote:
> What is the effect of declaring a class in a module and not exporting
> it? Would that prevent to add more instances to that class other than
> those already defined in the module?
> 
> More in detail, consider this module:
> ===
> module Peano (Z,S,C) where
> 
> data Z
> data S a
> 
> -- Not exported
> class Peano b where
> instance Peano Z where
> instance Peano a => Peano (S a) where
> 
> -- Exported
> class Peano a => C a where
> ===
> 
> Would that limit the instances of the class C to the Peano type naturals?

Correct.

It would also work to omit C and just use a non-exported class
directly, but your users will get mad that they can't write type
signatures for their functions. 

Stefan


More information about the Haskell-Cafe mailing list