【发布时间】:2018-11-23 17:52:40
【问题描述】:
所以基本上我试图检查rule 的中间是否满足某些条件但条件取决于另一个变量。
在我的情况下,如果 Num1 是 10,那么 Num2 不能是 1 - 如果它是 1 则失败,如果 Num1 是 20,那么 Num2 不能是 2。
这是我想出来的
do_function(Num1, Num2):-
write('first'),
((Num1 = 10, Num2 \= 1); (Num1 = 20, Num2 \= 2)),
write('last').
与之合作的query:
?- do_function(20, 1).
firstlast
true.
但是有了这个query 我明白了:
?- do_function(10, 2).
firstlast
true ;
false.
在这种情况下,它出于某种原因写入firstlast,但在我的实际代码中,它执行第一部分然后崩溃,因为它得到了false。
【问题讨论】:
标签: prolog