【发布时间】:2019-05-05 21:56:51
【问题描述】:
我的理解Eta-conversion如下:
作为eta-reduction
(lambda (x) (M x)) -> M
- 当 M 不包含 x 时;
所以,
(lambda (x) ((lambda (y) (y y)) x)) ->
(lambda (y) (y y))
问题解答:
作为 eta 扩展
M -> (lambda (x) (M x))
(lambda (y) (y y)) ->
(lambda (x) ((lambda (y) (y y)) x))
【问题讨论】:
-
到底是什么问题?您是在问问题中给出的 eta-reductions 和 eta-expansions 是否正确?
-
另一件事,你所说的语言中的所有函数都是隐式柯里化的吗?换句话说,当您写
(lambda (x y) ....)时,您打算与(lambda (x) (lambda (y) ....))相同还是不同? -
我在问扩展和缩减是否正确。我认为扩展可能不正确。我首先考虑的是 Lambda Calculus 本身,然后是 Scheme 和 Lisp 作为编程语言实现。谢谢!
-
我修正了一个看似简单的错字。你的最后一个 sn-p 周围有一对额外的括号,你的意思是
(lambda (z) (y z)) -> y可能吗?如果是,那么是。 -
谢谢。我对 Eta 扩展感到困惑。我想我的还原部分没问题。