C.4.3 A lambda 表达式:有用的匿名性

lambda 是匿名函数的符号,即没有名字的函数。每次使用匿名函数时,都需要包含它的整个体。

因此,

(lambda (arg) (/ arg 50))

是一个函数,返回将传递给它的arg除以50的结果。

早些时候,例如,我们有一个函数multiply-by-seven;它将其参数乘以7。这个函数类似,只是它将其参数除以50;而且,它没有名字。multiply-by-seven的匿名等价物是:

(lambda (number) (* 7 number))

(See defun.)

如果我们想将3乘以7,我们可以写:

(multiply-by-seven 3)
 \_______________/ ^
         |         |
      function  argument


这个表达式返回21。

同样,我们可以写:

((lambda (number) (* 7 number)) 3)
 \____________________________/ ^
               |                |
      anonymous function     argument


如果我们想将100除以50,我们可以写:

((lambda (arg) (/ arg 50)) 100)
 \______________________/  \_/
             |              |
    anonymous function   argument


这个表达式返回2。将100传递给函数,该函数将该数字除以50。

See Lambda 表达式 in GNU Emacs Lisp 参考手册, 了解有关lambda的更多信息。Lisp 和 lambda 表达式源于 Lambda 演算。