2011-09-20 42 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). 

还有语法中缀运算符“<>”,这意味着不同的(或不同)。一旦这两个术语受到约束,这应该给出与检查术语是否不能统一的结果相同的结果,这是上述结构的作用。