問題4.65 – SICP(計算機プログラムの構造と解釈)その238
2009年08月07日
問題4.65
4.4.1節の wheel
規則
(assert! (rule (wheel ?person) (and (supervisor ?middle-manager ?person) (supervisor ?x ?middle-manager))))
実行結果
;;; Query input: (wheel ?who) ;;; Query results: (wheel (Warbucks Oliver)) (wheel (Warbucks Oliver)) (wheel (Bitdiddle Ben)) (wheel (Warbucks Oliver)) (wheel (Warbucks Oliver))
2つの質問を別々に実行して、動作を理解する。
まず、最初の質問 (supervisor ?middle-manager ?person)
で ?middle-manager
?person
それぞれへの束縛を含んだフレームのストリームができる。
;;; Query input: (supervisor ?middle-manager ?person) ;;; Query results: (supervisor (Aull DeWitt) (Warbucks Oliver)) (supervisor (Cratchet Robert) (Scrooge Eben)) (supervisor (Scrooge Eben) (Warbucks Oliver)) ;; ※1 (supervisor (Bitdiddle Ben) (Warbucks Oliver)) ;; ※2(2つめの質問において、対応する結果が3つ存在する) (supervisor (Reasoner Louis) (Hacker Alyssa P)) (supervisor (Tweakit Lem E) (Bitdiddle Ben)) (supervisor (Fect Cy D) (Bitdiddle Ben)) (supervisor (Hacker Alyssa P) (Bitdiddle Ben)) ;; ※3
先のフレームに対し、2つめの質問 (supervisor ?x ?middle-manager)
でフィルタをし、結果のストリームを作る。
;;; Query input: (supervisor ?x (Aull DeWitt)) ;;; Query results: ;;; Query input: (supervisor ?x (Cratchet Robert)) ;;; Query results: ;;; Query input: (supervisor ?x (Scrooge Eben)) ;;; Query results: (supervisor (Cratchet Robert) (Scrooge Eben)) ;; ※1 ;;; Query input: (supervisor ?x (Bitdiddle Ben)) ;;; Query results: (supervisor (Tweakit Lem E) (Bitdiddle Ben)) ;; ※2 (supervisor (Fect Cy D) (Bitdiddle Ben)) ;; ※2 (supervisor (Hacker Alyssa P) (Bitdiddle Ben)) ;; ※2 ;;; Query input: (supervisor ?x (Reasoner Louis)) ;;; Query results: ;;; Query input: (supervisor ?x (Tweakit Lem E)) ;;; Query results: ;;; Query input: (supervisor ?x (Fect Cy D)) ;;; Query results: ;;; Query input: (supervisor ?x (Hacker Alyssa P)) ;;; Query results: (supervisor (Reasoner Louis) (Hacker Alyssa P)) ;; ※3
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542