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
Evaluating 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.
Edited by Finn Teegen