2012-08-26
Peter J. Landin 在1964年将术语 闭包 定义为一种包含 环境成分 和 控制成分的实体。 闭包 这一术语,用来指代某些其开放绑定(自由变量)已经由其语法环境完成闭合(或者绑定)的 lambda 表达式,从而形成了 闭合的表达式,或称闭包。在没有闭包的语言中,变量的生命周期只限于创建它的环境。但在有闭包的语言中,只要有一个闭包引用了这个变量,它就会一直存在。清理不被任何函数引用的变量的工作通常由垃圾回收完成。 作用: 闭包可以用来实现对象系统。 多个函数可以使用一个相同的环境,这使得它们可以通过改变那个环境相互交流。比如在Scheme中。 因为闭包只有在被调用时才执行操作,所以它可以被用来定义控制结构 昨天看SICP,在页脚处读到:“闭包”来自抽象代数,一集元素称为在某个运算(操作)之下封闭,如果将该运算应用于这一集合中的元素,产生的仍是该集合里的元素。此与Lisp社团用“闭包”描述的概念:闭包也是一种为表示带有自由变量的过程而用的实现技术 ,完全不同。SICP采用第一种意义。
[ 主页]