我是haskell的新手,刚刚来到懒惰的世界编程。我读到该seq
函数非常特殊,因为它强制使用严格的评估以便在某些情况下更有效。但我就是找不到seq
字面上的意思。也许严格评估Q*???
问问题
614 次
2 回答
10
它应该提醒您“顺序”或“顺序”,因为它允许程序员指定其参数的评估顺序。
于 2014-01-09T08:57:36.257 回答
-6
seq
在返回第二个参数之前评估它的第一个参数。通常引入它是为了通过避免不必要的惰性来提高性能。它强制评估功能。
seq :: a -> b -> b
seq _ y = y
这个函数定义被包装了,
#ifdef __HADDOCK__
所以它只会被 haddock(文档工具)编译,而不是实际的编译器!“真实”序列在 GHC.Prim 中定义为seq :: a -> b -> b; seq = let x = x in x.
这只是一个虚拟的定义。基本上 seq 是由编译器特别处理的特殊语法。你写了'seq评估它的第一个参数' - 但第一个定义显然没有这样做。
更多阅读:
于 2014-01-09T12:33:43.760 回答