В Emacs Lisp некоторые символы по умолчанию вычисляются самими собой. К ним относятся nil и t, а также любой символ, имя которого начинается со знака ‘:’ (эти называются ключевыми словами). Эти символы нельзя переопределить, и их значения нельзя изменить. Любая попытка установить или привязать nil или t вызывает ошибку setting-constant. То же самое относится и к ключевому слову (символу, имя которого начинается со знака ‘:’), если оно интернировано в стандартный obarray, за исключением того, что установка такого символа в его же значение не является ошибкой.
nil ≡ 'nil
⇒ nil
(setq nil 500) error→ Попытка установить константный символ: nil
функция возвращает t, если object является символом, имя которого начинается со знака ‘:’, интернированным в стандартный obarray, и возвращает nil в противном случае.
Эти константы принципиально отличаются от констант, определенных с помощью специальной формы defconst (см. Определение глобальных переменных). Форма defconst служит для информирования читателей о том, что вы не намерены изменять значение переменной, но Emacs не выдает ошибку, если вы ее все же измените.
Небольшое количество дополнительных символов сделано только для чтения по различным практическим причинам. К ним относятся enable-multibyte-characters, most-positive-fixnum, most-negative-fixnum и несколько других. Любая попытка установить или привязать их также вызывает ошибку setting-constant.