Next: 5 Prolog処理系の実現
Up: 4 論理型プログラミングとProlog
Previous: 4.1 ホーン節の表現
これに対して問い合わせは,
?- goal.
という具合に書きますが,
ここでは,
(?- (living-thing dad))
のようにdadはliving-thingかという形で問い合わせを行なう
ことにします.もちろん変数を使ってもよく,
(?- (living-thing ?x))
というようにすると?xにdadやqueen-elizabethがマッチするわけです.
通常のProlog処理系は,下のようなプログラム実行になります.
これは,SICSTUS Prolog (http://www.sics.se/sicstus/)
での実行例です.大文字が変数で,それぞれの述語が成り立つためには
変数がどうなっていなければならないかを表示します.
セミコロンは,人間が対話的に入力している部分です.
| ?- use_module(library(lists)).
% loading c:/program files/sicstus
prolog 3.9.0/library/lists.po...
% module lists imported into user
% loaded c:/program files/sicstus
prolog 3.9.0/library/lists.po in
module lists, 321 msec 13632 bytes
yes
| ?- member(a, [b,a,c]).
yes
| ?- member(a, [b,c,d]).
no
| ?- member(X, [a,b,c]).
X = a ? ;
X = b ? ;
X = c ? ;
no
| ?- member(b, [X,a,c]).
X = b ? ;
no
| ?- member(a,[a,X,b]).
true ? ;
X = a ? ;
no
| ?-
| ?- member(a,X).
X = [a|_A] ? ;
X = [_A,a|_B] ? ;
X = [_A,_B,a|_C] ? ;
X = [_A,_B,_C,a|_D] ? ;
X = [_A,_B,_C,_D,a|_E] ? ;
X = [_A,_B,_C,_D,_E,a|_F] ? .
Top-level options:
RET y no more choices
; n more choices
b break
? h print this information
? b
% Break level 1
% 1
| ?-
| ?- length([a,b,c],X).
X = 3 ? ;
no
| ?- length(X,3).
X = [_A,_B,_C] ? ;
no
| ?- length(X, 2), member(a , X).
X = [a,_A] ? ;
X = [_A,a] ? ;
no
Next: 5 Prolog処理系の実現
Up: 4 論理型プログラミングとProlog
Previous: 4.1 ホーン節の表現
generated through LaTeX2HTML. M.Inaba 平成18年5月21日