class Foo (x :: * -> * -> *) where
data Bar a b
instance Foo Bar
type Baz a b = Either (Bar a b) b
instance Foo Baz -- does not work as Foo is a type synonym and not fully applied
For the given example is there a way to define an instance for Either (Bar a b) b
without adding a newtype
or altering Foo
?