我正在阅读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