функция без оператора c ++ [закрыто]

Явный сбой. fail часто используется в сочетании с разрезом: ... !, fail. для обеспечения отказа.

Для всех конструкций. Явное использование fail / false для перечисления через backtracking - очень склонная к ошибкам активность. Рассмотрим случай:

... ( generator(X), action(X), fail ; true ), ...

Идея, таким образом, должна «делать» действие для всех X. Но что происходит, если action(X) терпит неудачу? Эта конструкция просто продолжается со следующим кандидатом - mdash; как будто ничего не произошло. Таким образом, некоторые ошибки могут оставаться необнаруженными очень долго.

Для таких случаев лучше использовать \+ ( generator(X), \+ action(X) ), который терпит неудачу, если action(X) не сработает для некоторого X. Некоторые системы предлагают это как встроенный forall/2. Лично я предпочитаю использовать \+ в этом случае, потому что \+ немного яснее, что конструкция не оставляет привязки.

Сбой. В диагностических целях часто полезно добавлять целевые false в свои программы. Подробнее см. .

-10
задан Vlad from Moscow 17 January 2017 в 11:11
поделиться