さかもとのブログ

つらつらと

演習問題4.19

Ben:逐次規則版

もともとの内部定義を掃き出さない評価器を使えばいい

;;; M-Eval input:
(let ((a 1))
  (define (f x)
    (define b (+ a x))
    (define a 5)
    (+ a b))
  (f 10))

;;; M-Eval value:
16
Alyssa
;;; M-Eval input:
(let ((a 1))
  (define (f x)
    (define b (+ a x))
    (define a 5)
    (+ a b))
  (f 10))
*** ERROR: Unassinged variable *unassigned* --LOOKUP-VARIABLE-VALUE a
Stack Trace:
gauche
gosh> (let ((a 1))
            (define (f x)
               (define b (+ a x))
               (define a 5)
               (+ a b))
          (f 10))
20

gaucheは同時評価?
でも