回答:
(defconst nil ())
正しい効果があるようです。nil
Emacs 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番目の引数が実際にまだオプションであることを伝えません)。