Hatena::ブログ(Diary)

ネットブックは開発マシンの夢を見るか

2011-05-07

きょうの「なんでやねん」

| 21:13

common lisp の教本ばっかり読んでると、シンボルは内部的には大文字になってるんだよなと漠然と思ってた。

なので common処理系ならなんでも (eq 'HOGE 'hoge ) は t になるんじゃないかと。

xyzzy では下のようになった。

;;; xyzzy
(eq 'hoge 'hoge)
;=> t

(eq 'HOGE 'hoge)                ; おお? 違うのか。
;=> nil

(eq 'nil nil)
;=> t

(eq 'NIL nil)                   ; おおお?
;=> nil

NTEmacs-24 でやったら、xyzzy と同じになった。

ということは、xyzzyemacs に合わせたんだな。きっと。

ちなみに clozure CL でやってみたら、上記はすべて T だった。

今頃こんなのを書いてること自体あほなんだが、emacsxyzzy 用に書いたのを他の cl に持っていくときは要注意かもしれず。

kuubokuubo 2011/09/03 15:24 xyzzyでも次の様にすれば、内部シンボルを大文字で持つ様に変更できます。
(setf (readtable-case *readtable*) :upcase)

但し、この式を評価した後に定義したシンボルしか変換してくれないので、あんまり意味はないかも知れません。
元に戻すには、次の式を評価すればOKです。
(|setf| (|readtable-case| |*readtable*|) :|preserve|)

gnrrgnrr 2011/09/03 21:08 そんな技があったとは、目からウロコです。
にしても、元に戻す S式 の 縦棒はもっと謎です…

kuuboさん、ためになるコメントありがとさんでした。

--
Regards,
Hideaki Shishido