Przypadkowo uruchomiłem następujące:
(unintern variable)
gdzie variable
była wartość nil
.
Jak mogę nil
wrócić bez ponownego uruchamiania Emacsa?
elisp
interactive-development
Sean Allred
źródło
źródło
Odpowiedzi:
(defconst nil ())
wydaje się mieć właściwy efekt; zwróć uwagę, że
nil
i pusta lista jest nie do odróżnienia w Emacs Lisp.Spojrzałem,
lread.c:4034
aby zobaczyć, jaknil
powstaje wobarray
.Zwróć uwagę na komentarz w wierszu 3896 w
lread.c
:To wyjaśnia, dlaczego Emacs nie chroni przed
(unintern nil)
i(unintern t)
.źródło
Stef
tym, właściwie :) Na tej drodze leży szaleństwo.nil
jest częstym błędem, przed którym można łatwo się zabezpieczyć. Po co umieszczać poręcz na schodach, skoro ludzie mogliby przez nią przeskoczyć?unintern
tak naprawdę nie jest często używany. Używanie go na mainobarray
jest prawie zawsze złym pomysłem (dlatego kompilator bajtów narzeka, gdy nie przejdziesz drugiego argumentu iC-h f unintern
nie mówi ci, że drugi argument jest nadal opcjonalny).