在急切求值中编码 if 分支和递归
Encode if-branch and recursion in eager evaluation
据我所知,在热切求值中,我们不能像正常顺序求值那样对 if 分支和递归进行编码。
例如,在 lambda 演算中,if-branch 和 factorial(fac) 可以被编码
if e1 e2 e3 = e1 e2 e3
fac = Y(λf.λn. if n=0 1 n*f(n-1))
Y = λf.(λx. f(xx))(λx. f(xx))
我们可以在 eager evaluation 中对 if 分支和递归进行编码吗?
如果可以的话,我想知道我们应该如何使用 lambda 演算对 if-branch 和阶乘进行编码。
if e1 e2 e3 = ???
fac = ???
将它们都包装在忽略其参数的 lambda 中,然后 if 可以通过强制选择分支,传递一些虚拟值。
所以可以做到,但前提是 'if' 像这样使用:if e1 (λ_.e2) (λ_.e3)
据我所知,在热切求值中,我们不能像正常顺序求值那样对 if 分支和递归进行编码。
例如,在 lambda 演算中,if-branch 和 factorial(fac) 可以被编码
if e1 e2 e3 = e1 e2 e3
fac = Y(λf.λn. if n=0 1 n*f(n-1))
Y = λf.(λx. f(xx))(λx. f(xx))
我们可以在 eager evaluation 中对 if 分支和递归进行编码吗? 如果可以的话,我想知道我们应该如何使用 lambda 演算对 if-branch 和阶乘进行编码。
if e1 e2 e3 = ???
fac = ???
将它们都包装在忽略其参数的 lambda 中,然后 if 可以通过强制选择分支,传递一些虚拟值。
所以可以做到,但前提是 'if' 像这样使用:if e1 (λ_.e2) (λ_.e3)