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

Back to archive index

Katsutoshi Itoh cut-s****@maste*****
2005年 2月 20日 (日) 22:18:09 JST


In message <20050****@lava*****>, Shiro Kawai writes:

一応 WiLiKi の OnLisp に書きましたが、 gensym をラップする
様にして内部で gensym したシンボルを保持するクロージャにして
使ってみまたところです。
ただ…そうか。hash 使った方が良かったですね。

>
>Gaucheはinternされないシンボルを持たないので
>偶然名前が衝突してしまう危険は避けられませんが。
>

あれ、そう言えば名前の衝突って  gauche native な gensym も
特に避けてくれる訳ではないんですね。
今試したら先回りして G39 とか用意してても (gensym) でも同じく G39 とか
生成するし、それでも事前に用意してたシンボルとは別なんですね。
まったく同じシンボルってわけでもないと。
gensym って名前衝突さけるんだと思ってたから gensym をラップして
使ってみたんですが、これなら Shiro さんが書かれたみたいに全部自前で
実装しても同じことですね。

gosh> (gensym) 
G38
gosh> (define G39 #f)
G39
gosh> (define G40 #f)
G40
gosh> (gensym)
G39
gosh> (if (gensym) "new" "old")
"new"
gosh> (gensym) 
G41




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