Using the extension TypeSynonymInstances
it is possible to write an instance like that:
instances MyClass String where ...
Using newtype
it is possible to declare an instance like that:
newtype Kleisli m a b = Kleisli (a -> m b)
instance MyClass (Kleisli m) where ...
I now that it is not possible to do the following:
type Kleisli m a b = a -> m b
instance MyClass (Kleisli m) where ...
Now is there an extension that allows me to do so? If not, what problems prohibit such an extension?