
Hello, the functions on type literals on the master branch are not yet implemented. If you want to play around with these kinds of things, please use the "type-nats" branch (please note that this is a development branch so things may occasionally break!). In the first example, GHC is saying that it can't solve "SingI (d :: Nat)", which is because the master branch cannot see that "d" must be 1. Similarly, in the second one it does not know about '<='. Both of these should work on the 'type-nats' branch though. The confusing arity issue in the first example is because of kind a polymorphism---SingI has one kind argument (e.g., Nat) and one type argument. (e.g., d) but---at present---GHC renders these in the same way. Hope this helps, and happy hacking! -Iavor On Thu, Aug 23, 2012 at 9:41 PM, Carter Schonwald < carter.schonwald@gmail.com> wrote:
Hello,
I'm trying to understand how much i can build on top of type literals, so as an exercise, i've been trying to see if I can define a type level "absolute different of two natural numbers"
i have a minimal example that either type checks in a useless way, or gives a misleading type errors! (or perhaps i am fundamentally not understanding someting)
here's the gist for the misleading type error version (it seems to indicate that SingI arity 2, rather than arity 1) https://gist.github.com/3445419
heres the gist for the version that type checks in a useless way! and complains that it doesn't understand that (1<=2) https://gist.github.com/3445456
are these bugs in type nats, or am I missing something?
thanks! Carter Schonwald
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users