This FAQ dice quecosto Tiempo de Haskell `operador seq`
El operador de la SEC es
seq :: a -> b -> b
x
seq
y evaluará x, suficiente para comprobar que no es inferior, entonces descarte el resultado y evalúa y. Esto puede no parecer útil, pero significa que se garantiza que x se evalúa antes de considerar a y.
Eso es tremendamente agradable de Haskell, pero tampoco significa que en
x `seq` f x
el costo de la evaluación de x
se pagarán dos veces ("descartar el resultado")?
Tal vez "se descarta el resultado" es demasiado fuerte. Descarta el resultado de la misma manera que 'const' descarta su segundo argumento. Si el argumento ha sido evaluado, de alguna manera no lo evalúa o descarta el resultado, simplemente lo ignora. "x' seq' y evaluará x, lo suficiente como para comprobar que no está en la parte inferior, entonces _ignore_ el resultado y evalúe y "es quizás una mejor manera de expresarlo. – MatrixFrog
Empiezo a darme cuenta de cuán diferente es el modelo de cálculo de Haskell de mi lenguaje de programación principal (C++). –