[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