Petr,
> 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))
Err....
fmap g (X' (X a b)) = X' (X (g a) b)
Cheers,
Stefan