Hi,
oh, I didn't realize that you meant using HEAD.
I'd guess that the new behavior is a result of the changes Simon made to the constraint solver a little while ago (maybe about a month ago?).
I haven't had a chance to look at the code yet, but I believe he eliminated some constraint interactions, which did not contribute towards type-checking more programs, but lead to more confusing error messages.
By the way, I am not sure that this is a regression---I kind of like new the new behavior. For my second example we get:
test.hs:9:8:
No instance for (C Bool Float) arising from a use of ‛op’
In the expression: op True :: Float
In an equation for ‛test’: test = op True :: Float
This tells us exactly what the problem is, namely the missing instance, without going into stuff about functional dependencies. I guess we _could_ also say that such an instance can't exist because of the other instance and the functional dependency, but I am not sure how relevant that is...
-Iavor