【发布时间】:2021-03-15 08:23:03
【问题描述】:
fix f = let {x = f x} in x
谈到let,我认为let P = Q in R 会评估Q -> Q' 然后P 被R 中的Q' 替换,或者:R[P -> Q']。
但是在fix的定义中Q依赖于R,那么如何评估呢?
我想这是关于惰性评估的。 Q' 变成了一个 thunk,但我无法在脑海中推理。
作为上下文,我正在查看 Y 组合子,它应该找到一个函数的不动点,所以如果我有这个函数,one x = 1,那么fix one == 1 必须成立对吧?
所以fix one = let {x = one x} in x,但我看不出1 会如何从中产生。
【问题讨论】:
标签: haskell lazy-evaluation evaluation fixpoint-combinators