ちょろっと直した。以下、差分。# 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