nil и tВ Emacs Lisp символ nil имеет три отдельных значения: это символ с именем «nil»; это логическое значение истинности false; и это пустой список — список с нулевым количеством элементов. Когда он используется как переменная, nil всегда имеет значение nil.
Насколько это касается парсера Lisp, «()» и «nil» идентичны: они обозначают один и тот же объект, символ nil. Различные способы записи символа предназначены исключительно для чтения человеком. После того как парсер Lisp прочитал «()» или «nil», невозможно определить, какая именно запись была фактически введена программистом.
В этом руководстве мы используем (), когда хотим подчеркнуть, что это означает пустой список, и используем nil, когда хотим подчеркнуть, что это означает логическое значение false. Это хорошая конвенция для использования и в программах Lisp.
(cons 'foo ()) ; Подчеркивает пустой список (setq foo-flag nil) ; Подчеркивает логическое значение false
В контекстах, где ожидается логическое значение, любое значение, отличное от nil, считается true. Однако t — предпочтительный способ представления логического значения true. Когда вам нужно выбрать значение, представляющее true, и нет другой основы для выбора, используйте t. Символ t всегда имеет значение t.
В Emacs Lisp nil и t являются специальными символами, которые всегда вычисляются самими собой. Это делается для того, чтобы вам не приходилось их заключать в кавычки при использовании в качестве констант в программе. Попытка изменить их значения приводит к ошибке setting-constant. См. Переменные, которые никогда не меняются.
Возвращает не-nil, если object является одним из двух канонических булевых значений: t или nil.