On Thu, Nov 18, 2010 at 20:17, Arnaud Bailly <arnaud.oq...@gmail.com> wrote:
> Hello,
> I am trying to understand and use the Nat n type defined in the
> aforementioned article. Unfortunately, the given code does not compile
> properly:

[snip]

> instance (Nat n) => Nat (Succ n) where
>  toInt   _ = 1 + toInt (undefined :: n)

[snip]

> And here is the error:
>
> Naturals.hs:16:18:
>    Ambiguous type variable `n' in the constraint:
>      `Nat n' arising from a use of `toInt' at Naturals.hs:16:18-39
>    Probable fix: add a type signature that fixes these type variable(s)

You need to turn on the ScopedTypeVariables extension (using {-#
LANGUAGE ScopedTypeVariables #-} at the top of your file, or
-XScopedTypeVariables at the command line). Otherwise, the 'n' in the
class declaration and in the function definition are different, and
you want them to be the same 'n'.

Erik
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to