回答:
(defconst nil ())
正しい効果があるようです。nilEmacs Lispでは、と空のリストは区別できないことに注意してください。
でlread.c:4034どのようnilに作成されるかを確認しましたobarray。
以下の3896行lread.cのコメントに注意してください。
/* There are plenty of other symbols which will screw up the Emacs
session if we unintern them, as well as even more ways to use
`setq' or `fset' or whatnot to make the Emacs session
unusable. Let's not go down this silly road. --Stef */
/* if (EQ (tem, Qnil) || EQ (tem, Qt))
error ("Attempt to unintern t or nil"); */
これは、なぜEmacsが(unintern nil)およびに対して保護しないのかを説明してい(unintern t)ます。
Stefはこれに同意します、実際には:)その道を進むと狂気にあります。
nilは、簡単に保護できる一般的なエラーです。なぜ人々がそれを飛び越えることができるのに階段に手すりを置くのですか?
unintern頻繁には使用されません。メインでそれを使用することは、obarrayほとんど常に悪い考えです(2番目の引数を渡すことに失敗すると、バイトコンパイラーが文句をC-h f unintern言うので、2番目の引数が実際にまだオプションであることを伝えません)。