Пример лямбда-выражения
Рассмотрим следующий пример:
(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 для этой цели (см. Локальные переменные). Лямбда-выражения в основном используются как анонимные функции для передачи в качестве аргументов другим функциям (см. Анонимные функции), или хранятся как определения функций-символов для создания именованных функций (см. Имена функций).
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Simple-Lambda.html