这可能很简单,但我无法在任何地方找到答案。在 Prolog 中,当您想阻止它搜索其他答案时,一旦变量已经被实例化,您可以使用 ! 标志(通常称为“切割”标志)。您可以在此链接中看到它以了解我的意思: http ://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse44
例如,给定规则:
max(X,Y,Z) :- X =< Y,!, Y = Z.
如果我们查询:
max(X,Y,X).
这 !sign 将阻止 prolog 回溯并尝试通过重新实例化 X 来证明 (X =< Y)。这意味着所有答案中的 X 将具有相同的值。
pyDatalaog 中有这样的东西吗?