将结果存储到prolog中的变量?

man*_*ing 1 prolog

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回答?

Dan*_*ons 6

你要做的是找出是否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)