/var/log/messages

Nov 26, 2013 - 1 minute read - Comments - EoPL Scheme

昨晩

ちょろっと直した。以下、差分。# rib ではなくてリストになっていたので。

ぐぬ。差分以下です (を

diff --git a/2.DataAbstraction/20.Ex.2.23/env.scm b/2.DataAbstraction/20.Ex.2.23/env.scm
new file mode 100644
index 0000000..ad7613b
--- /dev/null
+++ b/2.DataAbstraction/20.Ex.2.23/env.scm
@@ -0,0 +1,26 @@
+(define empty-env
+  (lambda ()
+    '()))
+
+(define list-find-position
+  (lambda (sym env)
+    (cond ((null? env) #f)
+         ((eqv? sym (car (car env))) (cdr (car env)))
+         (else
+          (list-find-position sym (cdr env))))))
+
+(define extend-env
+  (lambda (sym val env)
+    (cons (cons sym val) env)))
+
+(define apply-env
+  (lambda (env sym)
+    (cond ((null? env)
+          (error "No binding for " sym))
+         (else
+          (let ((val (list-find-position sym env)))
+            (if (not val)
+                (apply-env (cdr env) sym)
+                val))))))

むむむ。

それでもまだナチュラルをヤッちゃってる気がしているなどorz