
If I'm not mistaken, changing: bar i = i + 10 to bar i = i + 10::Int ought to fix it. The issue is that the compiler is being to general wrt the type of "10", it's inferring that it's just of type (Num a => a) -- the type of all numbers (sortof.) Alternately, you could implement this as: instance Num a => Foo a where bar x = x + 10 which similarly ought to fix it. Do you understand why? Amitava Shee wrote:
I have the following code
-- foo.hs module Foo where
class Foo a where bar :: a -> a
instance Foo Int where bar i = i + 10
------------------
It fails to compile withe following error *Foo> bar 10
<interactive>:1:4: Ambiguous type variable `t' in the constraints: `Num t' arising from the literal `10' at <interactive>:1:4-5 `Foo t' arising from a use of `bar' at <interactive>:1:0-5 Probable fix: add a type signature that fixes these type variable(s) *Foo>
- Thanks Amitava Shee ------------------------------------------------------------------------
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners