Visual Prolog中的“不相等”标志?

时间:2011-09-20 12:32:37

标签: prolog equals clause 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).

2 个答案:

答案 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).

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