
Am Donnerstag, 27. Januar 2005 18:53 schrieb S. Alexander Jacobson:
This code gives me a Kind error because IVal isn't applied to enough type arguments.
import qualified Set
class Table table indexVal | indexVal->table where --insertIndex::item->indexVal item -> table item ->table item union::table item -> table item -> table item --union t1 t2 = t1
data DBTable item = DBTable data IVal item = Name item
instance Table DBTable (IVal ) where
Weirdly, when I uncomment the insertIndex function, things work. But, if I then uncomment
I'm not sure about this, but I believe that the type-variable indexVal in the class definition is defaulted to kind *. Now IVal has kind * -> *, so the instance declaration doesn't kind-match. If you uncomment insertIndex, ghc can see that indexVal must have kind * -> *, so things work.
the default implementation of union, I get:
No instance for (Table DBTable indexVal) arising from use of `Main.$dmunion' at example.hs:13 In the definition of `union': union = Main.$dmunion In the definition for method `union' In the instance declaration for `Table DBTable IVal'
I don't know what this error even means. But it goes away if I put the union implementation in the instance rather than in the class.
I don't see what's wrong there either. Maybe consulting the user's guide will help.
Bot these error messages seem unreasonable. Can someone clarify?
Hope, a) I got it right, b) it helped.
Note: I am using GHC 6.2.2
-Alex-
Daniel