为什么会有两次拨打 seq
在下面的代码中 ( sourced from here ) - r
通过两次:
first' :: (a -> b) -> (a, c) -> (b, c)
first' f (x,y) = let { x' = f x; r = (x', y) }
in x' `seq` r `seq` r
我认为打给 seq
的一个电话会做使它严格的伎俩。
最佳答案
这是某种程度的错误。 r `seq` r
和 r
在语义上完全相同。
关于haskell - 在 `seq` 的严格版本中两次调用 `first`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67694846/