
3 May
2007
3 May
'07
1:47 a.m.
Iavor Diatchki wrote:
Notice, furthermore, that the behavior of such constructors may be a bit unexpected when combined with overloading. Consider, for example, the following declarations:
data T = T !(forall a. Eq a => a) test = seq (T undefined) True
In GHC 6.6 ``test`` evaluets to ``True`` because ``undefined`` is converted to a function that expects its implict evidence argument.
It's the same with functions: myseq :: (forall a. Eq a => a) -> b -> b myseq = seq myseq undefined True ==> True -- Ashley Yakeley