在谓词内部的变量中是否有办法将不同值的2倍赋值?例如,我们可以以某种方式制作
X is 10,
X is 3.
产生真实吗?
答案 0 :(得分:2)
请不要这样做。 is/2
用于评估算术表达式。
在没有任何上下文的情况下,很难建议什么是正确的方法。传统的方式是拥有这样的谓词:
ten_or_three(10).
ten_or_three(3).
您可以使用这样的谓词来进行各种Prolog-y事情。
?- ten_or_three(10).
true.
?- ten_or_three(4).
false.
?- length(L, 3), maplist(ten_or_three, L), sumlist(L, Sum).
L = [10, 10, 10],
Sum = 30 ;
L = [10, 10, 3],
Sum = 23 ;
L = [10, 3, 10],
Sum = 23 ;
L = [10, 3, 3],
Sum = 16 ;
L = [3, 10, 10],
Sum = 23 ;
L = [3, 10, 3],
Sum = 16 ;
L = [3, 3, 10],
Sum = 16 ;
L = [3, 3, 3],
Sum = 9.
答案 1 :(得分:1)
例如
p(X) :- X is 3;X is 5.
对于X = 3
或5
都是正确的。