seq 如何评估 Haskell 中的无限列表?

How can seq evaluate an inifinite list in Haskell?

据说 Haskell seq 函数强制计算其第一个参数,returns 第二个参数。它用于增加表达式评估的严格性。那么下面怎么可以简单地 return 5:

seq [1..] 5

它不应该被困在试图构造一个无限列表中吗?

seq 评估为 弱头部范式 (WHNF),这实质上意味着它评估了一层数据构造函数。在这种情况下,这意味着它强制计算第一个 cons 单元(: 数据构造函数)。

我有一个很长的 post 在 https://haskell.fpcomplete.com/tutorial/all-about-strictness

解释相关细节