On Fri, Feb 28, 2014 at 9:44 AM, Casey McCann <cam@uptoisomorphism.net> wrote:
The restriction to distinct type variables, and the resulting issues
with unification, apply equally to instances for applied type
constructors. This disallows e.g. writing a Monoid instance for (a ->
a) directly without a newtype wrapper, not that we'd want to do that
anyway.

This was once the instance defined in Data.Monoid. It was changed to the current one in GHC 6.6.

--
Dan