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