parent(max,alex).
?- parent(max,alex).
"true."
?- parent(max,jack).
"false."
?- X = parent(max,jack), write(X). // Why X != false?
"X = parent(max, jack)."
Run Code Online (Sandbox Code Playgroud)
如何从查询"parent(max,jack)"(true或false)存储到X回答?
你要做的是找出是否parent(max, jack)会成功.通常在Prolog你会做这样的事情:
foo :-
parent(max, jack),
% if you make it here, the predicate is true
...
foo :-
% since you're here, the predicate is false
Run Code Online (Sandbox Code Playgroud)
但是,这可能会被你正在做的其他事情所掩盖.如果您想更明确地了解它,可以使用条件构造:
foo :-
(parent(max, jack)
-> % true case
; % else case)
Run Code Online (Sandbox Code Playgroud)
如果你希望X为真,如果这是真的,你可以这样做:
foo :-
(parent(max, jack) -> X = true ; X = false),
...
Run Code Online (Sandbox Code Playgroud)