Знак "Не равно" в Visual Prolog? - PullRequest
       22

Знак "Не равно" в Visual Prolog?

25 голосов
/ 20 сентября 2011

Не могу найти никакой документации по знаку "не равно" в 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 ]

48 голосов
/ 20 сентября 2011

Я не знаю, что вы подразумеваете под "не равным" (не объединяет?), Но вы можете попробовать это:

X \= Y
not(X = Y)
\+ (X = Y)
6 голосов
/ 20 сентября 2011

Документация по второму варианту, указанному Каарелем, может быть найдена в этой визуальной ссылке на Пролог на странице.

Однако проблема с вашим кодом идет немного глубже.Вам нужно подождать проверки неравенства, пока оба термина Person и Sister не будут связаны, поэтому измените порядок вещей так:

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

Существует также синтаксис для инфиксного оператора "<>", который означаетили другой).Как только два термина связаны, это должно дать тот же результат, что и проверка того, нельзя ли объединить термины, что и делает вышеуказанная конструкция.

...