在谓词中分配值

时间:2019-05-29 23:16:25

标签: prolog

在谓词内部的变量中是否有办法将不同值的2倍赋值?例如,我们可以以某种方式制作

X is 10,
X is 3.

产生真实吗?

2 个答案:

答案 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 = 35都是正确的。