[Gauche-devel-jp] Re: Can we distinguish gensym from normal symbol?

Back to archive index

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



Gauche-devel-jp メーリングリストの案内
Back to archive index