-
@ 正気・腕力・犬
2025-02-24 08:09:16(define (f x) (let ((a 0)) (+ a x))) (f ?x@1) => 1の評価結果が書き換わってバックトラックすることを考える(f ?x) => 2envからfの定義を見て(let ((a 0)) (+ a x)) => 2トップにletが見えてdeclsが決まっているので 決まっているa:0をenvに入れて謎なbodyをreval いけそう (define (f x) (let ((a x)) (+ a 0))) (f ?x) => 2は(let ((a x)) (+ a 0)) => 2トップにletが見えるのでreval letで declsが不定なので先にbodyを見て a:2が決まる しかし (let ((a x)) (+ a x)) => 2になるとシンボル代入して解くのと (+ x x) => y みたいなときに特別扱いというか方程式解くくんに投げるのとを実装しないと無理か