Shiro Kawai
shiro****@lava*****
2005年 2月 20日 (日) 20:15:35 JST
From: Katsutoshi Itoh <cut-s****@maste*****> Subject: [Gauche-devel-jp] Re: Can we distinguish gensym from normal symbol? Date: Sun, 20 Feb 2005 17:49:30 +0900 > In message <20050****@lava*****>, Shiro Kawai writes: > >しかし、あるシンボルがinternされているかどうかを知る述語を用意している > >処理系は少ないかも。 > > > >http://www.shiro.dreamhost.com/scheme/wiliki/schemexref.cgi?uninterned-symbol%3f > > これを見ると、chezscheme だけですか。 > 区別できる機能ってあまり欲しいとは思われないんですね。 schemexrefは常に書きかけなので、そこに書いてあればありますが、 書いてないから無いとは限らないっす。 でも多分あんまり必要とされてないのは事実じゃないかなあ。 どうしても欲しければ、自前のgensymで生成した名前を覚えておいて queryする関数を書けばいいし。 Gaucheなら例えばこんなかんじ: (define-values (gensym generated-symbol?) (let ((ht (make-hash-table 'eq?)) (counter 0)) (values (lambda prefix (let1 s (string->symbol (format "~a~4,'0d" (get-optional prefix "G") counter)) (inc! counter) (hash-table-put! ht s #t) s)) (lambda (symbol) (hash-table-get ht symbol #f))))) Gaucheはinternされないシンボルを持たないので 偶然名前が衝突してしまう危険は避けられませんが。 --shiro