2011-08-05 2 views
3

私は読んでいますLearn Prolog Now,1.1.2ナレッジベース2ここで彼らはmodus ponensの連鎖使用について書いています。gprologがmodus ponensの使用を連鎖させないのはなぜですか?

KB2.plファイル:

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

クエリする場合:

playsAirGuitar(yolanda). 

がgprologに提出され、それから、それを推測することができるはずですので、yesを対応することになっていますヨランダが幸せであるという事実。

しかし、gprologはnoで応答します。何故ですか?

+0

おかげのような警告を取得する必要があります.org /):)。 –

答えて

2

私は問題は、述語listensToMusic/1の句が分離されていると考えています。

次のコードは私のためにそう返す://www.learnprolognow:

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

あなたは[ "今プロローグ学ぶ"](HTTPを指すため

warning: discontiguous predicate listensToMusic/1 - clause ignored 
+0

ありがとう!それはそれを修正した。 – systemovich

関連する問題