Benjamin Franksen wrote:
No, you're right, cool but useless! I think I lost sight of the problem... we want to wrap higher order types like:
This is extremely cool. The type of unwrap is indeed general enough. Unfortunately, it doesn't help, because the result type of wrap
Wrap (forall a. a -> a)
still isn't accepted in an instance declaration. Neither is the pair
(unwrap, Wrap (forall a. a -> a))
Or maybe I have not quite understood what you proposed to do with these definitions.
(forall a . a -> a)
"Wrap a" makes the higher order type a parameter - which is still not "wrapped"...
Template-haskell would need to generate a new unique type:
newtype ForallAzdAzaA = ForallAzdAzaA { forallAzdAzaA : forall a . a -> a }Then all occurances of the plain type (forall a . a -> a) would need replacing with
ForallAzdAzaA. The tricky bit would be determining where in the code to put the
wrap and unwrap bits.
But the point is moot anyway. Without first class labels you still need to write the
newtype declaration...
Keean.
_______________________________________________ Haskell mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell
