Ex. 4.54
(require (a ...))の継続を考える。s0、f0 は require に渡される適当な継続として。
a ⇒ f0 (aが#fのとき) a → s0 (aが#tのとき)
なので
(define (analyze-require exp) (let ((pproc (analyze (require-predicate exp)))) (lambda (env succeed fail) (pproc env ;; pproc には上の継続列の (a...)が入る (lambda (pred-value fail2) ;; pred-value には pprocの実行結果が入る (if (not pred-value) (fail) (succeed 'ok fail2))) fail))))
以上。やっとamb評価器おわり。疲れた。
いつも参考にさせて頂いているSICPのサイト