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

_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to