请看以下示例:
(lambda (a b c) (+ a b c))
我们可以将该函数传递给 funcall 来调用它,示例如下:
(funcall (lambda (a b c) (+ a b c))
1 2 3)
此次调用会对 lambda 表达式的函数体进行求值,其中变量
a 绑定为 1、b 绑定为 2、c 绑定为 3。
函数体的求值过程会将这三个数字相加,得到结果 6;
因此,该函数调用返回的值为 6。
需注意,参数也可以是其他函数调用的结果,例如以下示例:
(funcall (lambda (a b c) (+ a b c))
1 (* 2 3) (- 5 4))
该调用会从左到右对参数 1、(* 2 3) 和 (- 5 4) 进行求值。
随后将 lambda 表达式作用于参数值 1、6 和 1,最终得到结果 8。
这些示例表明,你可以使用以 lambda 表达式作为其CAR 部分的形式,
来创建局部变量并为其赋值。在早期的 Lisp 版本中,这是绑定并初始化局部变量的唯一方式。
但如今,使用特殊形式 let 来实现此目的会更清晰(see 局部变量)。
Lambda 表达式如今主要用作匿名函数:既可作为参数传递给其他函数(see 匿名函数),
也可作为符号的函数定义存储,从而生成命名函数(see 函数命名)。