Временная стоимость оператора `seq` в Haskell

В этом FAQговорится, что

Оператор seq — это

seq :: a -> b -> b

x seqy оценит x, достаточно, чтобы убедиться, что он не является нижним, затем отбросить результат и оценить y. Это может показаться бесполезным, но это означает, что x гарантированно будет оценен до рассмотрения y.

Это очень мило со стороны Haskell, но означает ли это, что в

x `seq` f x

стоимость вычисления xбудет оплачена дважды ("отбросить результат")?

12
задан quant_dev 14 March 2012 в 17:44
поделиться