[Haskell-cafe] What's wrong with the classes/insances?

Pieter Laeremans pieter at laeremans.org
Fri Jun 20 18:04:10 EDT 2008


What 's wrong with this:

type Id = String

class Catalog a where
    listItems :: a -> IO [String]
    getItem :: a -> Id -> IO (Maybe String)

class Item a where
    getCatalog :: Catalog catalog => a -> catalog

data Catalog c => Content c = Content {auteur :: String, inhoud::
String, catalog::c}

instance Catalog c => Item (Content c) where
   getCatalog (Content  _ _ c) = c

I get this as error from ghci:

    Couldn't match expected type `catalog' against inferred type `c'
      `catalog' is a rigid type variable bound by
                the type signature for `getCatalog'
      `c' is a rigid type variable bound by
          the instance declaration
            at ../Sites/liberaleswebsite/www.liberales.be/cgi-bin/Test.hs:20:17
    In the expression: c
    In the definition of `getCatalog': getCatalog (Content _ _ c) = c
    In the definition for method `getCatalog'
Failed, modules loaded: none.

thanks in advance,


Pieter Laeremans <pieter at laeremans.org>

"The future is here. It's just not evenly distributed yet." W. Gibson

More information about the Haskell-Cafe mailing list