Так что в основном я пытаюсь проверить в середине 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
.