为什么gprolog不把思考方式的用法串联起来



我正在阅读Learn Prolog Now, 1.1.2 Knowledge Base 2他们写的是如何将模态动词的使用联系在一起。

.pl文件:

listensToMusic(mia).
happy(yolanda).
playsAirGuitar(mia) :- listensToMusic(mia).
playsAirGuitar(yolanda) :- listensToMusic(yolanda).
listensToMusic(yolanda) :- happy(yolanda).

当查询:

playsAirGuitar(yolanda).

被提交给gprolog,它应该响应yes,因为它应该能够从yolanda是快乐的这一事实中推断出来。

但gprolog以no响应。为什么呢?

我认为问题是谓词listenstommusic/1的子句是分开的。

以下代码为我返回yes:

listensToMusic(mia).
listensToMusic(yolanda) :- happy(yolanda).
happy(yolanda).
playsAirGuitar(mia) :- listensToMusic(mia).
playsAirGuitar(yolanda) :- listensToMusic(yolanda).

你应该得到一个类似

的警告
warning: discontiguous predicate listensToMusic/1 - clause ignored

相关内容

  • 没有找到相关文章

最新更新