2015-09-14 3 views
2

Обычно, когда цель терпит неудачу, я возвращаюсь «ложно», т. Е. Цель не была удовлетворена. Есть ли способ сделать SWI-Prolog для печати предиката, строки и/или порядкового номера подцели, где это не удалось. Я не хочу трассировать всю программу, просто хочу, чтобы какая-то обратная связь была похожа на другие языки программирования. Я знаю, что это не ошибка для возврата false, но при отладке будет хорошо иметь эту обратную связь, чтобы выявить проблемы. Если это возможно, конечно.SWI-Prolog: «false» где?

благодаря

ответ

0

возможно

...p1, p2, (p3;backtrace(10)), p4,... 

также может быть полезно начать трассировку после p3 не удается:

...p1, p2, (p3;backtrace(10),trace), p4,... 
2

Вы также можете рассмотреть вопрос об использовании "неудавшийся-срез" техника многократно описываемый @false: он имеет its own tag.

Кроме того, выезд this great answer. Вы можете использовать код, показанный там, чтобы создать свой собственный «отладчик», который позволяет вам (помимо всего прочего) точно, что вам нужно.

Смежные вопросы