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 _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe