/var/log/messages

debugging with sixth sense

EoPL の Exercise 2.17

i/f を探索するだけ、と値の取得、という意味付けをすれば良いのかどうか。例えば以下?

(define empty-env
  (lambda ()
    (lambda (sym search)
      (if search
          #f
          (eopl:error 'apply-env "No binding for ~s" sym)))))

(define extend-env
  (lambda (syms valus env)
    (lambda (sym search)
      (let ((pos (list-find-position sym syms)))
        (if (number? pos)
          (if search
            #t
            (list-ref vals pos))
          (apply-env env sym))))))

(define apply-env
  (lambda (env sym)
    (env sym #f)))

(define has-association?
  (lambda (env sym)
    (env sym #t)))

試験書けるのかな。とりあえず試験から書いてみます。

でっちあがった試験が以下。

実装は以下になりました。extend-env をちょい修正したのですがやや微妙感あり。

ふと Ruby って環境をどうやって持ってるのかな、というあたりに思い至っているなど。

Comments