Лямбда-выражение — это список, который выглядит следующим образом:
(lambda (arg-variables…) [documentation-string] [interactive-declaration] body-forms…)
Первый элемент лямбда-выражения всегда является символом
lambda. Это указывает на то, что список представляет собой функцию. Причина, по которой функции определяются с помощью lambda, заключается в том, чтобы другие списки, предназначенные для других целей, случайно не были восприняты как функции.
Второй элемент — это список символов — имена переменных аргументов (см. Особенности списков аргументов). Это называется списком лямбда. Когда вызывается функция Lisp, значения аргументов сопоставляются с переменными в списке лямбда, которым присваиваются локальные привязки с предоставленными значениями. См. Локальные переменные.
Строка документации — это объект строки Lisp, помещенный в определение функции для описания функции для служб справки Emacs. См. Строки документации функций.
Интерактивное объявление — это список вида (interactive
code-string). Это объявляет, как предоставлять аргументы, если функция используется интерактивно. Функции с таким объявлением называются командами; их можно вызывать с помощью M-x или привязывать к клавише. Функции, которые не предназначены для вызова таким образом, не должны иметь интерактивных объявлений. См. Определение команд, о том, как написать интерактивное объявление.
Остальные элементы — это тело функции: код Lisp, который выполняет работу функции (или, как сказал бы программист Lisp, «список форм Lisp для вычисления»). Значение, возвращаемое функцией, — это значение, возвращаемое последним элементом тела.