Замыкания
Как объясняется в разделе Правила области видимости для привязок переменных, Emacs позволяет включать лексическое связывание переменных. Если лексическое связывание включено, любая именованная функция, которую вы создаёте (например, с помощью defun), а также любая анонимная функция, которую вы создаёте с помощью макроса lambda, специальной формы function или синтаксиса #' (см. раздел Анонимные функции), автоматически преобразуется в замыкание.
Замыкание — это функция, которая также хранит сведения о лексическом окружении, существовавшем в момент определения функции. При её вызове все ссылки на лексические переменные в её определении используют сохранённое лексическое окружение. Во всех остальных отношениях замыкания ведут себя во многом как обычные функции; в частности, их можно вызывать так же, как обычные функции.
Пример использования замыкания см. в разделе Лексическое связывание.
;; lexical binding is enabled.
(lambda (x) (* x x))
⇒ #f(lambda (x) [t] (* x x))
Внутренняя структура замыкания является деталью реализации, поэтому мы не рекомендуем изучать или изменять её напрямую. Желающим узнать больше см. раздел Объекты функций-замыканий.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Closures.html