У меня есть следующие правила в моем коде:
in(rome, lacio).
in(lacio, italy).
in(salvador, bahia).
in(bahia, brazil).
is_in(X, Z) :- (in(X, Y), in(Y, Z)) ; in(X, Z).
Так что, если я спрошу is_in(rome, lacio).
, он вернет true
, что ожидается, но если я спрошу is_in(rome, italy).
, он вернется true
, а затем false
, вероятно, из-за второго слагаемого в is_in/2
.
Что я должен сделать, чтобы запретить ему возвращать два результата и вместо этого возвращать только true
, как в обычном "или "операция"?Я хоть ";"позаботится об этом, но это не сработало, как я ожидал.