#束縛っていう実体がランタイムに存在するとは限らないからなあ RT: @cametan_001: つくづくSchemeってのはsymbol-valueやsymbol-functionが無いので使いづらいって思ってるのは僕だけ?何か上手い手ねえのかな。束縛された実態を取り出す方法が。
#たとえば大域変数に全く変更がなければ、変数の実体は存在せず、値がその変数の参照箇所に埋め込まれているかもしれないし。変更があったって、実体はただの間接参照ポインタになってるかもしれないし。
#そりゃ困った(笑)。例えばPLTのハッシュとかでシンボル-シンボルの対を作ってて、後者をプロシージャにして取り出したいんですが「暗黙のクオート」が被さってるんで、すんなり行かないんですよね。後者にevalくっつけてハ追加するのもスマートじゃないし。
#Lisp (伝統的なLisp-CommonLispの系譜) は「世界はひとつ」で、プログラマはその世界の全てにいつでも手を入れられる「現存する神」なんだけど
#Schemeでは世界がいくつもあって、しかも「一度生み出したら、もう隅々まで触れない」世界もあり得る。世界の中から見ると、その世界を生み出した「神」はもういなくなってしまったいにしえの神だったりして、そんな世界では全知全能の存在をあてにせずに自力でなんとかしなくちゃならない。
#もちろんSchemeで伝統的な「単一世界
#「単一世界/全知全能神」モデルにすることもできるんだけど。要は実装まかせ。
#Schemeの仕様内で言えば、シンボルとその値との対応を知っているのは、プログラムが走ってる世界ではなくて、そのプログラムが走る世界を生み出した別の世界の方なんだね。
#Gaucheでは両方の世界は重なって存在するからglobal-variable-refとかできるけど。でも値の変更を許すと上位世界に矛盾を来たす可能性があるので参照だけになってる。
#@cametan_001: Scheme的には `(car ,car) といった具合に実体の方を突っ込んどくのが定石ですな。
#なるほど、です。そうか、そうやるしかないのか・・・って事はハッシュは諦めるしかないか。
#(apply hash-table-put! a-hash `(car ,car)) とか。ダサイかもですが。
#って、単に(hash-table-put! a-hash 'car car)でいいじゃん...
#まぁ、alistで関数テーブルもっといて、初期化処理でhash-tableに変換して、というのはよくやるんですが
#PLTのハッシュとGaucheのそれって違うみたいですね。構文が・・・(笑)。
#まあ、Scheme on Schemeの場合、ほとんどの関数はそのまま呼べるはずなのにいちいち束縛をコードで書いてやらないといかんというのは面倒ではある。
#シンボルテーブルをwalkできるインタフェースが処理系にあれば、マクロで一発登録も可能だと思うけど。
#ふむふむ。 RT : (び): まぁ、alistで関数テーブルもっといて、初期化処理でhash-tableに変換して、というのはよくやるんですが http://bit.ly/9bxPo1 #R5RSには(R6RSにも?)ハッシュテーブルはないですからね
#R6RSにはあるよ。
#GaucheもR6RS互換レイヤをそのうち提供するつもり。
#おお
#読んでないのがバレバレorz
#RT @togetter_jp: wt-tree のバグの話題 まとめ。 http://bit.ly/amfTy5 #read時の世界を別に分けることになるかなあ RT: @dico_leque: Scheme 的な、意地でもすべて lexical-scope な世界観で phase を分けようとすると、 read macro ってどうなるんだろうとは思ったりもしているけれどあまり追及していない
#それだと単なるプリプロセッサになっちゃってつまらない、というのはあるけど、セマンティクスをかっちり決めるにはそれしか無いような気がする。
#んがー、今流してるベンチマークが終わったら次を投入して寝ようと思ってるんだけど終わらねぇ。もうすぐ2時間か…