| Did you know ... | Search Documentation: |
| Pack call_cleaup_each -- README.md |
Installation using SWI-Prolog 7.1 or later:
?- pack_install(each_call_cleanup).
or
?- pack_install('https://github.com/TeamSPoon/each_call_cleanup.git').
Source code available and pull requests accepted at http://github.com/TeamSPoon/each_call_cleanup
Example usages:
with_prolog_flag(Flag,Value,Goal):-
(current_prolog_flag(Flag,Was)-> Cleanup = set_prolog_flag(Flag,Was); true),
each_call_cleanup(
set_prolog_flag(Flag,Value),
Goal,
Cleanup).
% notrace/1 that is not like once/1
no_trace(Goal):-
tracing ->
each_call_cleanup(notrace,Goal,trace);
Goal.
% Trace non interactively
rtrace(Goal):-
( tracing-> Undo=trace ; Undo = notrace ),
'$leash'(OldL, OldL), '$visible'(OldV, OldV),
each_call_cleanup(
(notrace,visible(+all),leash(-all),leash(+exception),trace),
Goal,
(notrace,'$leash'(_, OldL),'$visible'(_, OldV),Undo)).
Copyright (c) 2017, Douglas Miles <logicmoo@gmail.com> All rights reserved.