我有一个事实:
loves(romeo, juliet).
Run Code Online (Sandbox Code Playgroud)
然后我有'或'规则:
dances(juliet) :- loves(romeo, juliet).
dances(juliet) :- dancer(juliet).
Run Code Online (Sandbox Code Playgroud)
你可以看到舞者的事实不存在,但这应该没有问题,舞蹈(juliet)应该让我真实.相反,它让我回归真实,然后抛出一个关于舞者事实的例外异常.有没有办法为不存在的事实或规则编写规则?我是否需要检查事实是否存在?
要实现"如果不存在则失败",您可以使用该指令 声明谓词动态dynamic/1
.
例如:
:- dynamic dancer/1.
如果将此指令添加到程序中,则会得到:
?- dances(X). X = juliet .
并没有错误.
归档时间: |
|
查看次数: |
158 次 |
最近记录: |