2011-09-20 50 views
20

我在Visual Prolog中找不到「不等於」符號的任何文檔。請提供此問題的正確解決方案:Visual Prolog中的「不等於」符號?

class predicates 
     sister : (string Person, string Sister) nondeterm(o,o). 
    clauses 
     sister(Person, Sister) :- 
      Person [not-equal-sign] Sister, 
      parent(Person, Parent), 
      parent(Sister, Parent), 
      woman(Sister). 

在此先感謝!

回答

37

我不知道什麼叫「不等於」(不統一?)的意思,但你可以嘗試這些:

X \= Y 
not(X = Y) 
\+ (X = Y) 
+1

謝謝,第二個變種完美地工作! – Egor

+4

這些選項有沒有區別? – alaboudi

4

第二變種文件所指出的Kaarel可以發現在this Visual Prolog reference頁面。

但是,您的代碼問題要深入一些。你需要等待非平等的測試,直到兩個方面人士和姐姐的約束,因此重新安排這樣的事情:

sister(Person, Sister) :- 
     parent(Person, Parent), 
     parent(Sister, Parent), 
     not(Person = Sister), 
     woman(Sister). 

還有語法中綴運算符「<>」,這意味着不同的(或不同)。一旦這兩個術語受到約束,這應該給出與檢查術語是否不能統一的結果相同的結果,這是上述結構的作用。