在《黑客与画家》一书中,作者在13章——书呆子的复仇,有谈论各种语言的编程能力。
考虑我们需要写一个函数,它能够生成累加器,即这个函数A接受一个参数n,然后返回另一个函数B,函数B接受参数i,然后返回累加的值。
在Lisp写法如下
(def foo (n) (lambda (i) (incf n i)))
在Ruby写法:def foo (n) lambda {|i| n += i } end
Perl 5的写法则是:sub foo { my ($n) = @_; sub {$n += shift} }
其中作者给出的Python写法是:def foo (n): s = [n] def bar (i): s[0] += i return s[0] return bar
真是比C++还要复杂,无语了。