有没有办法可以为add / 3创建一个函数来执行此操作:
add(1,2,X) - X是3
add(1,X,3) - X是2
add(X,2,3) - X是1。
答案 0 :(得分:2)
作为初学者,最好的方法是使用提供所有功能的library(clpfd)
;甚至更多。与
?- use_module(library(clpfd)).
我们开始,在SICStus中你现在要告诉assert(clpfd:full_answer)
,然后我们有:
?- 1+2#=Z.
Z = 3.
?- 1+Y#=3.
Y = 2.
正如你所料。但更重要的是!
?- X+X#=Z.
2*X#=Z.
?- X+X#=X.
X = 0.
?- X+Y#=Z.
X+Y#=Z.