Проверка Prolog, произошел сбой предиката или нет

#prolog

#prolog

Вопрос:

Я хочу написать предикат, который возвращает решение из базы фактов. Когда решения не существует, предикат должен возвращать «Решений не существует». Возврат решения, которое существует в factbase, является тривиальным. Как реализовать часть «Решения не существует». Я использую SWI-Prolog.

Ответ №1:

Если у вас есть предикат, скажем, fact/1 , который содержит все ваши факты, вы можете использовать оператор if-then-else следующим образом:

 fact_or_no_solution(Sol) :-
    (fact(X) ->
        Sol = X
    ;
        Sol = 'No solution exists'
    ).