問題4-55〜56
「4.4 論理型プログラミング」に入りました。宣言的(何である)知識を用いる数学的な方法でプログラムが登場します。その事例としてデータベースが取り上げられています。この節も、前の非決定性プログラミング/amb評価器と同様、最初に論理型プログラムの使い方から説明されています。「4.4.2 質問システムはどう働くのか」以降で、実装の詳細が述べられているようで、少し読みましたが、これまたamb評価器と同様、難しそうな気配を感じました。しかし、SQLのようなquery languageがどのように動くのかというのは、自分にとって非常に面白いテーマだと思っているので、しっかりと読み進めていきたいと思っています。
問題4-55。単純質問を書く練習です。
;a (supervisor ?x (Bitdiddle Ben)) ;b (job ?x (accounting . ?type)) ;c (address ?x (Slumerville . ?district))
問題4-56。合成質問を書く練習です。
;a (and (supervisor ?person (Bitdiddle Ben)) (address ?person ?where)) ;b (or (salary (Bitdiddle Ben) ?ben-amount) (and (salary ?person ?amount) (lisp-value > ?ben-amount ?amount))) ;c (or (and (not (job ?person (computer . ?type))) (supervisor ?x ?person)) (job ?person ?job))