logo
TurboProlog / Документация / TOM_1

Пример использования предиката trace

Предположим вы уже знаете, что правило для предиката workslready ра-

ботает как положено, и вы имеете правило для предиката test, определенное

так:

test(X):- workslready(X, Z), other11redicate(B, A),...

Вы можете более эффективно проверить test, временно переопределив

его следующим образом:

test(X):-

trace (off),

works_already(X, Z),

trace(on),

other_predicate(B, A),

...

Предикат trace имеет вариант с выводом текущего состояния трассиров-

ки. Вы можете использовать эту версию trace внутри предикатов, для кото-

рых уже известно, что они работают. При этом вы можете устанавливать сос-

тояние трассировки обратно в первоначельное значение вместо того, чтобы

просто включить трассировку. В сложных ситуациях это может оказаться

очень ценным.

works_already(...):-

trace(OLD),

/* .....*/

trace (off),

/* .....*/

trace (OLD).