我有一个事实:
loves(romeo, juliet).
然后我有一个“或”规则:
dances(juliet) :- loves(romeo, juliet).
dances(juliet) :- dancer(juliet).
正如你所看到的,舞者事实不存在,但这应该没问题,舞蹈(朱丽叶)应该让我回归真实。相反,它返回 true,然后抛出一个关于舞者事实的存在异常。 有没有办法为不存在的事实或规则编写规则?我需要检查事实是否存在吗?
最佳答案
要实现“如果不存在则失败”,您可以使用指令 dynamic/1
声明您的谓词 动态 。
例如:
:- 动态舞者/1。
如果您将此指令添加到您的程序中,您将获得:
?- 跳舞(X)。
X = 朱丽叶。
并且没有错误。
关于prolog - 在 Prolog 中使用具有不同/不存在事实的 OR 运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44101059/