関数型言語の勉強にSICPを読もう - (72) 4章 - 超言語的抽象(245-248ページ)

非決定計算の話。まだきちんと理解できていない

(list (amb 1 2 3) (amb 'a' 'b' 'c'))

ambはあいまいに値を返すらしいんだけれども裏側で何が起きているか分からない。
脚注を読んだら分かった

  • 値を処理するプログラムから見ると amb はひとつの値を返す
  • プログラマから見ると、amb は可能性のある全ての値を返す

ということらしい。
オートマジカリーに選択点のバックトラックとかでてきた。

問題4.35

ふたつのあたえられた限界の間の整数を返す手続き an-integer-between を書け。

(define (an-integer-between s e)
    (let ((next (+ 1 s)))
    (amb s (if (= next e) (amb) e))))

答えがあっているかどうかは amb 評価器を書かないと分からない罠。


※「SICPを読もう」の目次はこちら


計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン 和田 英一
ピアソンエデュケーション (2000/02)
売り上げランキング: 56,404