Prolog,将事实传递到规则的参数列表中

时间:2017-03-19 23:56:21

标签: prolog

假设我有一系列事实:

fact(a,1).
fact(b,10).
fact(c,100).

我希望能够使用此类规则:

rule(fact(A,10),fact(c,B)):-
  write(A),
  write(B).

1 个答案:

答案 0 :(得分:1)

您使用事实谓词作为查询,例如

rule :-
  fact(A,10),
  fact(c,B),
  write(A),
  write(B).

补充:为了更直接地解释你的问题,你想做类似

的事情
rule(P1,P2):-
  call(P1), call(P2),
  write(A),
  write(B).

然后你需要以某种方式指定关系A-P1& B-P2,我认为不能以任何简单有用的方式完成。

所以也许你想要的是

rule(X,Y) :-
  fact(A,X),
  fact(Y,B),
  write(A),
  write(B).