Я случайно запустил следующее:
(unintern variable)
где variable
значение было nil
.
Как мне nil
вернуться без перезапуска Emacs?
elisp
interactive-development
Шон Оллред
источник
источник
Ответы:
(defconst nil ())
кажется, имеет правильный эффект; обратите внимание, что
nil
и пустой список неразличимы в Emacs Lisp.Я посмотрел,
lread.c:4034
чтобы увидеть, какnil
создается вobarray
.Обратите внимание на комментарий в строке 3896 в
lread.c
:Это объясняет, почему Emacs не защищает от
(unintern nil)
и(unintern t)
.источник
Stef
этим на самом деле :) Вниз по этой дороге лежит безумие.nil
- распространенная ошибка, от которой легко защититься. Зачем ставить перила на лестнице, когда люди могут перепрыгнуть через нее?unintern
не часто используется, на самом деле. С его помощью на магистральномobarray
довольно много всегда плохая идея (поэтому байты-компилятор жалуется , когда вы не пройти второй аргумент, иC-h f unintern
не сказать, что второй аргумент на самом деле еще не обязательно).