- 200 名前:198 mailto:sage [2006/08/30(水) 07:05:34 ]
- >199
ありがとうございます。 defineの所の説明とあわせて読んだら分りました。 こんどは、letrecを試してみようと、 > (letrec ((x 2) (y 'x)) (eval y)) としたところ、 ;ERROR: "/usr/local/lib/scm/Init5e1.scm": unbound variable: x ; in expression: (#@@eval (#@@copy-tree #@x)) ; in scope: ; (x) procedure <anon> ; (@eval @copy-tree . #@let) ; defined by load: "/usr/local/lib/scm/Init5e1.scm" ;STACK TRACE 1; x 2; (#@letrec ((x 2) (y (#@quote x))) (#@eval #@y)) といわれてしまいます。 (define x 2)(define y 'x)(eval y) なら2が帰って来てくれるのですが、 何がいけないのでしょうか。 letrecだと変数領域が割り当てられて、 それから初期値が算出される、と書いてあったので、 このやり方ならyは既に割り当てられたxをさすようになるだろうから、 正しく動くと思ったんですが...
|

|