
24 Oct
2007
24 Oct
'07
3 a.m.
Tristan Allwood: Very cool. I don't understand some (a lot of) parts though:
instance Show a => Reify (ShowConstraint a) where reify = ShowC
ShowC has type "(Show a) => ShowConstraint a", whereas reify is supposed to have type "ShowConstraint a".
data SingleList (a :: * -> *) where Cons :: (a b) -> b -> SingleList a -> SingleList a Nil :: SingleList a
Cons has a type variable "b" in its signature, but no forall. I suppose it comes from the * -> * in SingleList's type? That's all I can come up with for now. A great deal of high level coding flying around above my head now. Thanks, TJ