
Hi, I struggle with a dummy example using a multi-parameter typeclass containing a default implementation for a function: --------------------------------------- {-# LANGUAGE MultiParamTypeClasses #-} class Foo a b where bar :: a -> Int foobar :: a -> b -> Int foobar avalue bvalue = bar avalue instance Foo Int Int where bar i = 5 main = do print $ bar (4::Int) --------------------------------------- I obtain the following errors. I have tried various things without any success. Any help appreciated! Thanks TP PS: The errors: $ runghc test.hs test.hs:8:28: Could not deduce (Foo a b1) arising from a use of `bar' from the context (Foo a b) bound by the class declaration for `Foo' at test.hs:(3,1)-(8,37) The type variable `b1' is ambiguous Possible fix: add a type signature that fixes these type variable(s) In the expression: bar avalue In an equation for `foobar': foobar avalue bvalue = bar avalue test.hs:16:9: No instance for (Foo Int b0) arising from a use of `bar' The type variable `b0' is ambiguous Possible fix: add a type signature that fixes these type variable(s) Note: there is a potential instance available: instance Foo Int Int -- Defined at test.hs:10:10 Possible fix: add an instance declaration for (Foo Int b0) In the second argument of `($)', namely `bar (4 :: Int)' In a stmt of a 'do' block: print $ bar (4 :: Int) In the expression: do { print $ bar (4 :: Int) }