Spec-Zone.ru › Elisp

Специальные формы

Специальная форма — это примитивная функция, специально помеченная так, что её аргументы не все вычисляются. Большинство специальных форм определяют управляющие структуры или выполняют привязку переменных — вещи, которые функции не могут сделать.

Каждая специальная форма имеет свои правила, определяющие, какие аргументы вычисляются, а какие используются без вычисления. Вычисление конкретного аргумента может зависеть от результатов вычисления других аргументов.

Если первый символ выражения соответствует специальной форме, выражение должно следовать правилам этой специальной формы; в противном случае поведение Emacs не определено (хотя оно не вызовет сбой). Например, ((lambda (x) x . 3) 4) содержит подвыражение, начинающееся с lambda, но не является корректным выражением lambda, поэтому Emacs может сообщить об ошибке или вернуть 3 или 4 или nil, или может вести себя другими способами.

Функция: special-form-p объект

Этот предикат проверяет, является ли его аргумент специальной формой, и возвращает t, если это так, nil в противном случае.

Вот список всех специальных форм в Emacs Lisp в алфавитном порядке со ссылкой на описание каждой.

and

см. Сочетание условий

catch

см. Перехват и бросок

cond

см. Условные выражения

condition-case

см. Обработка ошибок

defconst

см. Определение переменных

defvar

см. Определение переменных

function

см. Анонимные функции

if

см. Условные выражения

interactive

см. Интерактивный вызов

lambda

см. Выражения лямбда

let
let*

см. Локальные переменные

or

см. Сочетание условий

prog1
prog2
progn

см. Последовательность

quote

см. Цитата

save-current-buffer

см. Текущий буфер

save-excursion

см. Экскурсии

save-restriction

см. Сужение

setq

см. Установка переменных

setq-default

см. Создание буферно-локального

unwind-protect

см. Нелокальные выходы

while

см. Итерация

Примечание Common Lisp: Вот некоторые сравнения специальных форм в GNU Emacs Lisp и Common Lisp. setq, if, и catch являются специальными формами как в Emacs Lisp, так и в Common Lisp. save-excursion — специальная форма в Emacs Lisp, но не существует в Common Lisp. throw — специальная форма в Common Lisp (потому что она должна уметь выбрасывать несколько значений), но это функция в Emacs Lisp (в котором нет нескольких значений).

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/Special-Forms.html

Spec-Zone.ru

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