После многих лет воздержания от языка программирования PROLOG, я пытаюсь войти в него снова. И быстро, что-то меня смутило.PROLOG - предложение возвращает true для констант, но не найдет решение для переменной?
(я использую SWI пролог 6.4.1 на окнах.)
Рассмотрим следующие определены:
father(jack, clara).
father(jack, sophie).
mother(angela,clara).
mother(angela,sophie).
parent(A, B) :- father(A, B).
parent(A, B) :- mother(A, B).
sibling(A, B) :-
A \= B,
parent(P, A),
parent(P, B).
Теперь, если я "попросить" переводчика: одноуровневый (Clara, Sophie).
Настоящий является ответом.
Но если я попытаюсь получить братьев и сестер, например. clara: sibling (clara, X).
Ответ только false. Точно так же, как findall (X, sibling (clara, X), L).
возвращает пустой список.
Почему?
'\ =' следует читать как «не может быть объединен с», ** не ** как «нет». Тогда нет никакого искажения любого заявления, которое его использует. –