
On Tue, 2010-06-22 at 21:51 -0400, Brandon S. Allbery KF8NH wrote:
On Jun 22, 2010, at 21:41 , Maciej Piechotka wrote:
test.hs:11:0: Constraint is no smaller than the instance head in the constraint: Functor (TestMonad a) (Use -XUndecidableInstances to permit this) In the instance declaration for `Functor (Testable a)'
What is undecidable? a is bound so TestMonad a should be bound so Functor (TestMonad a) should be valid.
I *think* the point of the error message is that Functor (TestMonad a) is a tautology, so including it doesn't actually constrain the instance (which in GHC-ese is "Constraint is no smaller than the instance head"). In short, GHC thinks you're being tricky in a way it can't understand, because otherwise there's no point in including the constraint, so it's telling you that being tricky requires UndecidableInstances.
I'm sorry but how "Functor (TestMonad a) is a tautology"? It cannot be derived from other constraints (in and outside this class). Unless you mean that GHC thinks it is tautology. Regards