Почему эта программа Prolog возвращает true и false? - PullRequest
0 голосов
/ 22 декабря 2019

Я новичок в Прологе и пытаюсь понять, почему эта очень простая программа возвращает 2 решения: истина И ложь. Для меня это должно возвращать только true, зачем возвращать false?

predicate1(_,[]).
predicate1(X,[_|T]) :- predicate1(X,T).

?- predicate1(abc,[]).

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 23 декабря 2019

Ваша цель объединяется с первым предложением (фактом) для предиката:

?- predicate1(abc,[]) = predicate1(_,[]).
true.

Таким образом, запрос возвращает true в качестве первого результата. Но точка выбора создается, поскольку есть второе предложение (правило) для предиката. Поскольку объединение цели и главы правила не удается, вы получаете false при запросе второго решения:

?- predicate1(abc,[]) = predicate1(X,[_|T]).
false.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...