Wrong transformation of some type class instances
Consider the following program:
data A = A class B a where b :: a -> Bool instance B A where b = (\_ -> True) ? (\_ -> False) bs x = [b x, b x] test = bs A
test results in only two value, namely
[True, True] and
[False, False] instead of four values. This is a severe bug that is not tackled by the proposal from Wolfgang Lux that is implemented with the augmentation during the dictionary transformation.