dram.me

闭包

闭包是现代语言常具有的一个功能,一些早期语言也在后续发展中增加了这一特性。

由于非常普遍,所以常会给人错觉闭包是编程语言的标准配备。这里提两个例外:Pascal和Prolog。

Pascal作为传统过程式语言的代表,不具备闭包还可以理解,类似的还有C。而Prolog虽然作为逻辑编程语言,但具备较多函数式编程语言的特性,不包含闭包以及高阶函数等特性就有点让人意外。

这里想要重点强调的是Prolog虽然没有闭包,但在语言应用上并没有太多障碍,这是值得分析的。所以问题是:闭包的价值是什么?