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

被折叠的 条评论
为什么被折叠?



