
The following doesn't seem to work. Is this a limitation of the current implementation or will it never work? Are there any work arounds without introducing extra type params into the data type E?
class G a b | a -> b where data E a :: * wrap :: b -> E a unwrap :: E a -> b
instance G a b where data E a = EC b -- this line - the b is not in scope. wrap = EC unwrap (EC b) = b
I get "Not in scope: type variable `b'". I was rather hoping it would be in scope. I've tried:
instance forall a b . G a b where ...
but that doesn't seem to extend the scope as it does with functions. I realise this is bleeding edge stuff. But I can't seem to work out from the various wiki pages on this whether this is going to be eventually supported. This is all with today's GHC HEAD. Cheers, Matthew -- Matthew Sackman http://www.wellquite.org/