
Can anyone explain the theoretical reason for this limitation, ie other than
it is a syntactical restriction, what would it take to lift this restriction
?
----- Original Message -----
From: "Stefan Holdermans"
Petr,
If I want to make it a functor in the last type variable (b), I can just define
instance Functor (X a) where fmap f (X a b) = X a (f b)
But how do I write it if I want X to be a functor in its first type variable?
Short answer: you can't. Easiest way to workaround is to define a newtype wrapper around your original datatype:
newtype X' b a = X' {unX' :: X a b}
instance Functor (X' b) where fmap g (X' (X a b)) = X' (X b (g a))
Cheers,
Stefan _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe