Thanks for the patch (though it needs a few more
'#if EXPLAIN_INSTANCE_RESOLUTION's).
It gets me a little further, up to
> class Foo a where foo :: a
> class Foo a => FooBar a where bar :: a
> class FD b c | b -> c where fun :: b -> c
> instance (Foo a, FD b c) => Foo (Either a b) where
> foo = undefined
> data B = B
> data C = C
> instance FD B C where fun = undefined
> instance FooBar a => FooBar (Either a B) where
> bar = undefined
when it can't build the instance Foo (Either a B).
Somehow the information in that dependency isn't being fully used.
Ross