Этот FAQ говорит, что
Оператор seq
seq :: a -> b -> bx
seqy будет оценивать x, достаточно, чтобы проверить, что это не дно, тогда отбросить результат и оценить y. Это может показаться нецелесообразным, но это означает, что x гарантированно оценивается до рассмотрения y.
Это ужасно приятно Haskell, но означает ли это, что в
x `seq` f x
стоимость оценки x будет выплачена дважды ( "отбросить результат" )?