Рассмотрим следующий пример:
(lambda (a b c) (+ a b c))
Мы можем вызвать эту функцию, передав ее в funcall, как здесь:
(funcall (lambda (a b c) (+ a b c))
1 2 3)
Этот вызов вычисляет тело лямбда-выражения, при этом переменная
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) слева направо. Затем оно применяет лямбда-выражение к
значениям аргументов 1, 6 и 1, получая значение 8.
Как показывают эти примеры, вы можете использовать форму с лямбда-выражением
в качестве ее CAR, чтобы создавать локальные переменные и присваивать им значения. В
старые времена Lisp этот метод был единственным способом привязки и инициализации локальных переменных. Но
в наши дни для этой цели яснее использовать специальную форму let (см. Локальные переменные).
Лямбда-выражения в основном используются как анонимные функции для передачи
в качестве аргументов другим функциям (см. Анонимные функции) или
хранятся как определения функций-символов для создания именованных функций
(см. Именование функции).