[xyzzy:01035] Re: site-lisp について
- Subject: [xyzzy:01035] Re: site-lisp について
- From: cake-smd@xxxxxxxxxxxxx
- X-mailer: Mew version 1.70 on Emacs 19.34.1 / Mule 2.3
亀井さんこんにちは、島田です。
ドット対のお話、よく分りました。リスト (foo bar baz) は
(foo . (bar . (baz . nil))) の省略形なんだから、
[CAR . CDR]
| |
foo +-[CAR . CDR]
| |
bar +-[CAR . CDR]
| |
baz nil
という構造になっていて、ということは結局リストっていうのは、CAR と CDR
の二つのポインタの対でできていると考えていいですか。
あ、これがセルですね。cons という関数はこれを生成するのか。
("c:/usr/home/bin/xyzzy/lisp" . ("c:/usr/home/lilp" . nil ))
だったらいいけど、
("c:/usr/home/bin/xyzzy/lisp" . "c:/usr/home/lilp")
だと CDR がセルを指していないので、これはリストではない、ということ
で検索にならないんですね。
*load-path* がどうしてこうなっちゃったかは分りました。
private-load-path を使ったあのマクロを書く際に、*scratch* でいろいろ試
しながらやっていたのですが、失敗するごとに *load-path* が長くなって(笑)
いくのに閉口して、いっぺん元の値に戻そうと思い、
(setq *load-path* "c:/usr/home/bin/xyzzy/lisp")
とやっちゃったんです。変数をリストに束縛すべきところに、文字列を直に
指してしまったんですね。ここを
(setq *load-path* '("c:/usr/home/bin/xyzzy/lisp"))
とすればよかったんでしょう。
実験。
|(setq test-foo "string")
|"string"
|
|(setq list-foo (cons "string" ()))
|("string")
|
|(setq string-foo "string2")
|"string2"
|
|(cons test-foo string-foo)
|("string" . "string2")
|
|(cons list-foo string-foo)
|(("string") . "string2")
|
|(cons string-foo list-foo)
|("string2" "string")
--
島田@自宅