闭包

闭包是一个函数对象,它能保存该函数对象的作用域中的值,不论这个函数对象的作用域是否已经失效。

当lambda表达式被定义在另一个函数中时,它将自动得到父函数作用域的访问权。

$ g=def(a){return def(b): a pow b};
$ g(10)(5);
100000

$ def mixture(a,b){return def(c): c*(a-b)+(1-c)*(a+b)};
$ g=mixture(10,5);
$ g(0.1);
14

$ def f(a,b){return def(x): a*x+b*(1-x)};
$ f(5,10)(0.2);
9