Next: 6 バックトラッキング
Up: 5 Prolog処理系の実現
Previous: 5.7 問い合わせの応答
実行例を示します.
(defun example1 nil
(init-prolog)
(<- (human ?x) (woman ?x))
(<- (human ?x) (man ?x))
(<- (carnivore ?x) (human ?x))
(<- (carnivore ?x) (human ?x) (eat ?x meat))
(<- (vegetarian ?x) (human ?x) (eat ?x vegetables))
(<- (living-thing ?x) (carnivore ?x))
(<- (living-thing ?x) (vegetarian ?x))
(<- (woman queen-elizabeth))
(<- (man dad))
(<- (eat queen-elizabeth meat))
(<- (eat dad vegetables))
)
<cl> (?- (living-thing dad))
Yes;
Yes;
<cl> (?- (living-thing ?x))
?X = QUEEN-ELIZABETH;
?X = DAD;
?X = QUEEN-ELIZABETH;
?X = DAD;
次のような一般的な手続きもプログラム可能です.
(defun example2 nil
(<- (member ?item (?item . ?rest)))
(<- (member ?item (?x . ?rest))
(member ?item ?rest)))
<cl> (example2)
MEMBER
<cl> (?- (member 2 (1 2 3)))
Yes;
<cl> (?- (member 2 (1 2 3 4 2)))
Yes;
Yes;
<cl> (?- (member ?x ( 1 2 3)))
?X = 1;
?X = 2;
?X = 3;
Next: 6 バックトラッキング
Up: 5 Prolog処理系の実現
Previous: 5.7 問い合わせの応答
generated through LaTeX2HTML. M.Inaba 平成18年5月21日