seq代表什么是haskell

时间:2014-01-09 08:45:28

标签: haskell seq

我是哈斯凯尔的新手,刚刚来到懒惰的世界。我读到seq函数非常特殊,因为它强制使用严格的评估,以便在某些情况下更有效。但我根本无法找到seq字面意思。也许严格评价Q * ???

2 个答案:

答案 0 :(得分:10)

它应该提醒你“顺序”或“序列”,因为它允许程序员指定其参数的评估顺序。

答案 1 :(得分:-6)

seq在返回第二个参数之前评估它的第一个参数。通常通过避免不必要的懒惰来提高性能。它强制评估功能。

seq :: a -> b -> b
seq _ y = y

来自prelude.hs

  

这个函数定义包含在#ifdef __HADDOCK__中,所以它会   只能由haddock(文档工具)编译,而不是由   实际编译! '真实'seq在GHC.Prim中定义为

seq :: a -> b -> b; 
seq = let x = x in x. 
     

这只是一个虚拟定义。基本上seq是特殊的语法   特别是由编译器处理。你写了'seq评估它   第一个参数' - 但第一个定义显然不会这样做。

通过user2407038

更多内容阅读: