功能编程和关闭术语诞生

时间:2013-02-18 09:40:50

标签: functional-programming closures lambda-calculus

我正在学习函数式编程和lambda演算,但我很想知道 如果封闭期限也出现在教会的原创作品中,或者它更现代化 术语严格关注编程语言。

我记得在教会的工作中有以下术语:自由变量,封闭为..., 等等。

2 个答案:

答案 0 :(得分:3)

这是一个更现代的术语,因为(现代FP中有很多东西),P。J. Landin(1964),The mechanical evaluation of expressions

  

我们也用a表示λ表达式的值   被称为“封闭”的信息包,包括   λ表达式与环境相关   它被评估了。

答案 1 :(得分:1)

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

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

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

λa λx . (a + x)

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

λx . (z + x)

通过β-还原,其涉及取代。如果需要,可以通过a调用此闭包。

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