The best you can do with fromInt is something like Int -> (forall n. (Nat n) => n -> r) -> r, since the type isn't known at compile time.
On Thu, Nov 18, 2010 at 2:52 PM, Arnaud Bailly <arnaud.oq...@gmail.com>wrote: > Thanks a lot, that works perfectly fine! > Did not know this one... > BTW, I would be interested in the fromInt too. > > Arnaud > > On Thu, Nov 18, 2010 at 8:22 PM, Erik Hesselink <hessel...@gmail.com> > wrote: > > 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 >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe