我想在我的prolog程序中編寫一個規則來確定某人是否是別人的兄弟。Prolog程序存在異常
例如,如果我鍵入brother_of(chris,X),它將返回christy,因爲chris是christy的兄弟。但是,當我輸入這個時,我得到一個存在異常。我已經包括了一些事實來涵蓋一切,但也許這是我的規則定義中的一個問題?代碼如下。
/* Facts */
female(ella).
female(jodi).
female(sonya).
female(jane).
female(christy).
female(mary).
male(arnold).
male(chris).
male(louis).
male(mark).
father(arnold).
father(louis).
father(mark).
mother(ella).
mother(jodi).
mother(jane).
mother(mary).
father_of(arnold, chris). /* arnold is the father of chris */
father_of(arnold, christy).
father_of(louis, mark).
father_of(mark, arnold).
mother_of(mary, chris).
mother_of(mary, christy).
mother_of(jane, arnold).
mother_of(ella, sonya).
mother_of(jodi, ella).
mother_of(jodi, mark).
/* Rules */
brother_of(X, Y) :-
male(X),
((father_of(Z, X), father_of(Z, Y));
(mother_of(W, X), mother_of(W, Y))),
X =\= Y.
工作,謝謝!但是,現在當我問兄弟_(克里斯,X)時,它會再次返回克里斯蒂。克里斯蒂第一次返回後,我輸入「;」以確保沒有更多,不應該這樣它應該返回「否」,但它再次返回christy。任何想法爲什麼? – aclark 2012-04-20 03:18:21
您需要[cut](http://en.wikipedia.org/wiki/Cut_%28logic_programming%29)目標:'!'。問我是否需要關於如何使用它的幫助(不知道你是否已經在你的研究中看到它) – mgibsonbr 2012-04-20 03:31:45
實際上我沒有看到它。我如何使用它? – aclark 2012-04-20 03:37:19