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

問題4.68

(assert! (rule (append-to-form () ?y ?y)))

(assert! (rule (append-to-form (?u . ?v) ?y (?u . ?z))
               (append-to-form ?v ?y ?z)))

(assert! (rule (reverse () ())))

(assert! (rule (reverse (?car . ?cdr) ?list)
               (and (reverse ?cdr ?tmp)
                    (append-to-form ?tmp (?car) ?list))))

実行結果

;;; Query input:
(reverse (1 2 3) ?x)

;;; Query results:
(reverse (1 2 3) (3 2 1))

;;; Query input:
(reverse ?x (1 2 3))

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