Пролог-процедуры "? -А" не существует - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь познакомиться с Прологом и запускаю очень, очень простую программу.

father(tom, john).  
father(jerry, john).

sibling(A, B) :-father(A, F), father(B, F).

Когда я бегу ?- sibling(tom,jerry) Я ожидаю True, но процедура получения "? -A" не существует. Есть ли синтаксическая ошибка? Или другой способ выполнить запрос?

1 Ответ

1 голос
/ 08 июля 2019

Потому что у вас нет ничего как знания! Вы используете заглавные буквы в предикате father. Как вы знаете, столицы используют для переменных. Итак, вам нужно написать что-то вроде следующего:

father(w, c).
father(g, c).
sibling(A, B) :-father(A, F), father(B, F).

Также имейте в виду, что с вашим определением w равно sibling из w (само по себе)! Кроме того, если вы хотите сделать это семантическим образом, вы можете переписать его следующим образом:

father(w, c).
father(g, c).
sibling(A, B) :- A \== B, father(A, F), father(B, F).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...