Prolog补充

时间:2012-04-08 21:06:48

标签: prolog

我很长时间都在prolog中加入了谓词。任何帮助都会对我有很大帮助..

这是我的谓词:

p(s(U,I), [s(A,B)|P1], T1,H(N, E), P,C) :- m(s(E,F), p(s(U,I), [s(A,B)|P1], +(C,F) ,H(N,E), P,C).

除了这部分外,一切正常:

+(C,F)总是给出类似3 + 2的值,而不是像5。

我尝试过所有可能的方法,比如

p(s(U,I), [s(A,B)|P1], T1,H(N, E), P,C) :- m(s(E,F)), C2 is C+F, p(s(U,I), [s(A,B)|P1], C2 ,H(N,E), P,C).

但是每当它返回为someinteger + someinteger就像3 + 2而不是5。

任何帮助都会有很大帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

您必须使用is/2谓词来执行算术,即X is 3 + 2.。否则它不会被“评估”!

尝试:

p(s(U, I),
  [s(A, B)|P1],
  C1,
  H(N, E),
  P,
  C) :-
    m(s(E, F)),
    C2 is F + C1,
    p(s(U, I),
      [s(A, B)|P1],
      C2,
      H(N, E),
      P,
      C).
如果将谓词置于其他谓词参数点中,则不执行

谓词(如果我们在谈论非元谓词,我们就在这里)。那是你的问题。