我在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).
答案 0 :(得分:47)
我不知道“不平等”是什么意思(不统一?),但你可以试试这些:
X \= Y
not(X = Y)
\+ (X = Y)
答案 1 :(得分:6)
Kaarel指出的第二个变体的文档可以在this Visual Prolog reference页面找到。
然而,您的代码问题会更深入。您需要等待不相等的测试,直到Person和Sister这两个术语都绑定为止,所以重新安排这样的事情:
sister(Person, Sister) :-
parent(Person, Parent),
parent(Sister, Parent),
not(Person = Sister),
woman(Sister).
还有一个中缀运算符“<>”的语法这意味着不同(或不同)。一旦这两个术语被约束,这应该给出与检查术语是否不能统一相同的结果,这就是上述结构的作用。