[Haskell-beginners] typeclass error
Joe Fredette
jfredett at gmail.com
Tue Apr 21 09:42:15 EDT 2009
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 at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jfredett.vcf
Type: text/x-vcard
Size: 296 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/beginners/attachments/20090421/be3b36aa/jfredett.vcf
More information about the Beginners
mailing list