(All instance types must be of the form (T a1 ... an)
where a1 ... an are *distinct type variables*,
and each type variable appears at most once in the instance head.
Is there something I've missed?
Yes:
Use -XFlexibleInstances if you want to disable this.)