[Mew-Win32 00309] Re: C-uZ
Miyashita Hisashi ( 宮下 尚:HIMI )
himi at example.com
1998年 2月 27日 (金) 01:39:29 JST
"YAMAGUCHI, Shuhei" <yamagus at example.com> writes:
> やまぐち@ねっとらぴゅたの住人、です。
>
> >>> In article <u90qyo0c1.fsf at example.com>,
> >>> Miyashita Hisashi(宮下 尚:HIMI) <himi at example.com> writes:
>
> himi> あらららら、A-listなんて、線形解析だからこんなことになるのは
> himi> 当然当然。^^;;;それにおそいでしょうし。
> himi> それにStringでやるから遅いし、メモリも必要になる。
> himi>
> himi> こういうことをやるときにはまよわずintern-softです。^^;;;;;
>
> そういうのがあるのですね。 ^^;;;
> でも、GNU Emacs Lisp Manual -Version 18 2nd DRAFT-(古い ^^;)を読んでも、
> いまいち使い方がピンとこないです…。
> DB(?)を作る時はMessage-IDをinternしまくって対応するファイルをそのシン
> ボルにput、検索時はintern-softでシンボルを得て、その後ファイル名をgetっ
> ていう感じでいいのでしょうか?
> #obarrayの中身を見ると、すごく違う気がする…。
おんなじObarrayに突っ込むのは、まあ無駄だから止めましょう。
まず、新しいobarrayをmake-vectorで作ります。(大きさは素数にすること)
その後、internでMessage-IDを突っ込みます。フォルダ名はシンボルにすべき
です。internして、putでMessage-IDのシンボルに結び付けましょう。ファイ
ル名は数字でしょうから数字で結んだほうが良いでしょう。同じくputで結び
付けましょう。
ここで、気をつけなくてはいけないのは、標準のObarrayに入っている
シンボルと混同してはいけないことです。かならず、作り上げたObarrayから
シンボルをintern(intern-soft)して、くみ上げなくてはいけません。
LISPはある面から見るとシンボル操作言語です。シンボルは同じObarrayに入っ
ているものなら一意性が保証されます。名前はある意味では仮に名づけられて
いるもので、(symbol-name)はシンボルそのものではありません。そういう現
実の実体を持たないものに対して、現実の世界から手を伸ばすために(intern)
が存在すると考えるとわかりやすいと思います。
ただ、Emacsは作り上げたシンボルの名前も全部メモリに蓄えます。これは、
メモリの無駄なので、Message-IDをすべてそのままシンボルにするのは止めた
ほうがいいかもしれません。(あらかじめ適当なHashを取っておくことをお勧
めします。)同じ物があったらListで記憶して区別しておけばよいでしょう。
from himi
## それにしても、Gnusが圧倒的に速いわけだ。Gnusはこれを
## 非常に有効に活用しています。
Mew-win32 メーリングリストの案内