-- Is it true that instances must exists before we can run function or
make subclasses?
instance C1  Person where
instance C1  Employee where

You can *call* class methods only for types which are instances of that
class.

But you can certain *write* functions that make use of the class methods, even if no instances exist, provided they remain polymorphic over the class. e.g.

    cumulativeAges :: C1 a => [a] -> Integer
    cumulativeAges = sum . map age

The assumption would be that some client of your code would eventually need to declare at least one instance, for some type they are interested in, before they could use the function at that concrete type. Those instances need not be in the same module as the definition of the class, nor in the same module as function definitions like cumulativeAges.


Regards,
    Malcolm

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to