Next: 5.7 問い合わせの応答
Up: 5 Prolog処理系の実現
Previous: 5.5 ホーン節の変数名の変更
データベースへの問い合わせは,
(defmacro ?- (&rest goals) `(prove-all ',goals))
というようなマクロで行なえる.
しかしこれでは,
<cl> (?- (living-thing dad))
(((#:?X109 . DAD) (#:?X107 . DAD) (#:?X106 . DAD))
((#:?X116 . DAD) (#:?X114 . DAD) (#:?X113 . DAD)))
というような事実の問い合わせに対してYESを返してほしいのに,
返さないのでわかりにくい.
また,
<cl> (?- (living-thing ?x))
(((#:?X97 . QUEEN-ELIZABETH) (#:?X96 . #:?X97)
(#:?X95 . #:?X96) (?X . #:?X95))
((#:?X98 . DAD) (#:?X96 . #:?X98) (#:?X95 . #:?X96)
(?X . #:?X95))
((#:?X100 . QUEEN-ELIZABETH) (#:?X99 . #:?X100)
(#:?X95 . #:?X99) (?X . #:?X95))
((#:?X105 . DAD) (#:?X103 . #:?X105)
(#:?X102 . #:?X103) (?X . #:?X102)))
というように変数で問い合わせを行なうと答えの中に
問い合わせに用いた変数以外の変数も現れるため
非常にわかりにくい.
Next: 5.7 問い合わせの応答
Up: 5 Prolog処理系の実現
Previous: 5.5 ホーン節の変数名の変更
generated through LaTeX2HTML. M.Inaba 平成18年5月21日