Visual Prolog中的"不相等"标志?

Ego*_*gor 26 equals prolog 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).
Run Code Online (Sandbox Code Playgroud)

Kaa*_*rel 50

我不知道你的意思是"不平等"(不统一?),但你可以试试这些:

X \= Y
not(X = Y)
\+ (X = Y)
Run Code Online (Sandbox Code Playgroud)

  • 这些选项之间是否存在差异? (16认同)
  • @alaboudi 显然 `\+` 和 `not` 更好地理解为“不可证明”而不是“不等于”。`\=` 或 `=\=` 是“不等于”的符号。例如:“不能证明 2 等于 4”写成“\+ (2 = 4)”“2 不等于 4”是写成`2 \= 4` 来源:http://www.cse.unsw.edu.au/~billw/dictionaries/prolog/negation.html (4认同)

har*_*ath 6

Kaarel指出的第二个变体的文档可以在Visual Prolog参考页面中找到.

但是,您的代码问题会更深入.您需要等待不相等的测试,直到Person和Sister这两个术语都绑定为止,所以重新排列这样的事情:

    sister(Person, Sister) :-
        parent(Person, Parent),
        parent(Sister, Parent),
        not(Person = Sister),
        woman(Sister).
Run Code Online (Sandbox Code Playgroud)

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