Functional programming 函数规划与闭包
我在学习函数编程和lambda微积分,但我想知道 如果结束语也出现在教堂的原作中,或者是一个更现代的词 与编程语言密切相关的术语 我记得在教会的工作中有这样的术语:自由变量,封闭成。。。,Functional programming 函数规划与闭包,functional-programming,closures,lambda-calculus,Functional Programming,Closures,Lambda Calculus,我在学习函数编程和lambda微积分,但我想知道 如果结束语也出现在教堂的原作中,或者是一个更现代的词 与编程语言密切相关的术语 我记得在教会的工作中有这样的术语:自由变量,封闭成。。。, 等等。这是一个更现代的术语,因为现代FP中有很多东西,p.J.Landin 1964 此外,我们还用a表示λ-表达式的值 一组称为闭包的信息,包括 λ-表达式和与之相关的环境 对其进行了评估 这是一个更现代的术语,因为现代FP中有很多东西,p.J.Landin 1964 此外,我们还用a表示λ-表达式的值 一
等等。这是一个更现代的术语,因为现代FP中有很多东西,p.J.Landin 1964 此外,我们还用a表示λ-表达式的值 一组称为闭包的信息,包括 λ-表达式和与之相关的环境 对其进行了评估
这是一个更现代的术语,因为现代FP中有很多东西,p.J.Landin 1964 此外,我们还用a表示λ-表达式的值 一组称为闭包的信息,包括 λ-表达式和与之相关的环境 对其进行了评估
在Scheme中考虑以下函数定义:
(define (adder a)
(lambda (x) (+ a x)))
在纯lambda演算中不需要显式闭包的概念,因为变量替换处理它。上面的代码片段可以翻译
λa λx . (a + x)
将此值应用于值z时,它将变为
λx . (z + x)
通过β-还原,这涉及到取代。如果你愿意,你可以把这个闭包称为a
该示例使用函数参数,但这适用于任何变量绑定,因为在纯lambda演算中,所有变量绑定都必须通过λ项进行。考虑Scheme中的以下函数定义:
(define (adder a)
(lambda (x) (+ a x)))
在纯lambda演算中不需要显式闭包的概念,因为变量替换处理它。上面的代码片段可以翻译
λa λx . (a + x)
将此值应用于值z时,它将变为
λx . (z + x)
通过β-还原,这涉及到取代。如果你愿意,你可以把这个闭包称为a
该示例使用函数参数,但这对任何变量绑定都适用,因为在纯lambda演算中,所有变量绑定都必须通过λ项进行。因此在Church的工作中,lambda表达式在其自由变量上是闭合的,但在该工作中没有明确说明闭合项@实际上,xdevel2000不是在其自由变量上,而是在由λ抽象约束的变量上。类似地,在Scheme等编程语言中,闭包不会发生在自由变量上:在定义加法器x+a x(其中a尚未定义)之后,定义a 2会更改加法器的行为。当然,并不是所有的编程语言都允许这样做。因此,在Church的工作中,lambda表达式在其自由变量上是封闭的,但在该工作中没有明确说明封闭项@实际上,xdevel2000不是在其自由变量上,而是在由λ抽象约束的变量上。类似地,在Scheme等编程语言中,闭包不会发生在自由变量上:在定义加法器x+a x(其中a尚未定义)之后,定义a 2会更改加法器的行为。当然,并非所有编程语言都允许这种情况。