1

很长一段时间以来,我都对序言中的加法谓词感到困惑。任何帮助都会对我有很大帮助..

这是我的谓词:

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。

任何帮助都会非常有帮助。

谢谢!

4

1 回答 1

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).

如果您将谓词放在其他谓词参数位置,则不会执行谓词(好吧,如果我们在这里谈论的是非元谓词)。那是你的问题。

于 2012-04-08T21:48:38.013 回答