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のサイト