Costo de tiempo del operador Haskell `seq`
Esta pregunta frecuente dice qu
El operador seq es
seq :: a -> b -> b
x seq
y evaluará x, lo suficiente como para comprobar que no está en la parte inferior, luego descartará el resultado y evaluará y. Esto puede no parecer útil, pero significa que se garantiza que x se evaluará antes de que se considere y.
Eso es muy amable de Haskell, pero ¿significa que en
x `seq` f x
el costo de evaluarx
se pagará dos veces ("descartar el resultado")