SICP 4.3.3 Ex. 4.54

  • 投稿日:
  • カテゴリ:

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

Eli Bendersky's website

さかもっちゃんちゃんこ

Serendip Web Studio