問題4.64 – SICP(計算機プログラムの構造と解釈)その237

問題4.64

;; 元の outranked-by 規則
(assert! (rule (outranked-by ?staff-person ?boss)
               (or (supervisor ?staff-person ?boss)
                   (and (supervisor ?staff-person ?middle-maneger)
                        (outranked-by ?middle-maneger ?boss)))))

;; Louis Reasoner の再入力した outranked-by 規則
(assert! (rule (outranked-by ?staff-person ?boss)
               (or (supervisor ?staff-person ?boss)
                   (and (outranked-by ?middle-maneger ?boss)
                        (supervisor ?staff-person ?middle-maneger)))))

and による2つの質問の組み合わせの順序が入れ替わっている。
Louis Reasoner の版では質問 (outranked-by (Bitdiddle Ben) ?who) によって、?staff-person(Bitdiddle Ben) に束縛され ?who?boss に束縛しなければならないと規定するフレームが出来上がる。
このフレームに対して (outranked-by ?middle-maneger ?boss)?middle-maneger ?boss とも未束縛のまま再帰的に呼び出され続けるために無限ループに陥る。

計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»