haskell - 在 `seq` 的严格版本中两次调用 `first`

标签 haskell seq

为什么会有两次拨打 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` rr在语义上完全相同。

关于haskell - 在 `seq` 的严格版本中两次调用 `first`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67694846/

相关文章:

compiler-construction - 类型检查器库

f# - F# 中 seq<int> 与 Lazy<LazyList<int>> 的性能

zsh - (zsh 大括号扩展 | seq) 用于字符列表 - 如何?

F# 对 Seq<'T> 中的多个字段求和

haskell - Uncurry 用于 n 元函数

linux - cabal 安装 hoogle 不工作

使用 foldLine 解析多个 block

list - 我如何称呼一个也支持提升的幺半群?

r - 如何将 for 循环与特殊 seq 一起使用

range - 我应该在 Perl 6 中用序列还是范围来计数?