If we have associated type synonyms, is there still reason to have associated data types?
For example, we can replace:
class C b where
data D b
...
instance C Int where
data D Int = D | E
with:
class C b where
type D b
...
data DInt = D | E
instance C Int where
type D Int = DInt
Or perhaps allow, for convenience, this form (which would desugar to the above):
class C b where
type D b
...
instance C Int where
data D Int = D | E