The try_type_improvement function assumes that the determinant is always the right most type argument to an open type
class F a b | a -> b
instance F Int Int
with
[W] F Int b -- works
T a b | b -> a
instance T Int int
with [W] T a Int -- Fails
Expected
both T and F should work.