Fri Jul 31 00:58:54 EDT 2015

duplicate instance declarations

A very important point! [1]

  The instance R a => A a says that every type "a" is an instance of
  "A"; if an instance for A is needed, the compiler says "OK, I know how
  to make one of those.  But I now add a new constraint, R a."

It does *not* say: pick one of these structurally identical things
based on the constraints you can satisfy.  That's a lot more involved
than structural induction, which is the approach Haskell uses to pick

[1] https://mail.haskell.org/pipermail/haskell-cafe/2008-October/049773.html