Spec-Zone.ru › Elisp

Пример лямбда-выражения

Рассмотрим следующий пример:

(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API