据说Haskell seq函数强制评估其第一个参数并返回第二个参数。它用于增加表达式评估的严格性。那么以下如何简单地返回5:
seq [1..] 5
它不应该在试图构建无限列表时陷入困境吗?
seq
评估弱头正规形式(WHNF),这实质上意味着它评估一层数据构造函数。在这种情况下,它意味着它强制评估第一个cons单元格(:
数据构造函数)。
我有一篇很长的文章,在https://haskell.fpcomplete.com/tutorial/all-about-strictness解释这方面的细节