C.4.3 lambda 表达式:实用的匿名函数

lambda 是匿名函数的符号,也就是没有名字的函数。每次使用匿名函数时,都需要把整个函数体写出来。

例如:

(lambda (arg) (/ arg 50))

这个函数会把传入的参数 arg 除以 50 并返回结果。

之前我们写过一个 multiply-by-seven 函数,用来把参数乘以 7。这个函数与之类似,只是把参数除以 50;而且它没有名字。与 multiply-by-seven 等价的匿名函数是:

(lambda (number) (* 7 number))

(See The defun Macro。)

如果我们想计算 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。

关于 lambda 的更多内容,参见 see Lambda Expressions in The GNU Emacs Lisp Reference Manual。Lisp 与 lambda 表达式均源自 λ 演算。