1

我正在研究函数式编程和 lambda 演算,但我想知道 Church 的原始作品中是否也出现了闭包术语,或者它是一个与编程语言严格相关的更现代的术语。

我记得在教会的工作中有这样的术语:自由变量、封闭到……等等。

4

2 回答 2

3

这是一个更现代的术语,由于(正如现代 FP 中的许多东西一样),PJ Landin (1964),表达式的机械评估

此外,我们通过一组称为“闭包”的信息来表示 λ 表达式的值,该信息包括 λ 表达式和评估它的相关环境。

于 2013-02-18T09:45:07.307 回答
1

考虑 Scheme 中的以下函数定义:

(define (adder a)
  (lambda (x) (+ a x)))

在纯 lambda 演算中不需要显式闭包的概念,因为变量替换会处理它。上面的代码片段可以翻译

λa λx . (a + x)

当您将此应用于值z时,它变为

λx . (z + x)

通过β-还原,这涉及替换。a如果你愿意,你可以调用这个闭包。

(该示例使用函数参数,但这适用于任何变量绑定,因为在纯 lambda 演算中,所有变量绑定都必须通过 λ 项发生。)

于 2013-02-18T10:05:30.447 回答