我很长时间都在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。
任何帮助都会有很大帮助。
谢谢!
答案 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).
如果将谓词置于其他谓词参数点中,则不执行谓词(如果我们在谈论非元谓词,我们就在这里)。那是你的问题。