Looks like I can simulate SWI-Prolog snapshot/1 in Dogelog
player since this weekend.
snapshot(G) :-
current_prolog_flag(stage, S),
T is S+1,
set_prolog_flag(stage, T),
G,
sy_clear_stage, /* rollback */
set_prolog_flag(stage, S).
And it works differently, since I added meta information rollback.
?- current_predicate(foo/1).
fail.
?- snapshot(assertz(foo(bar))).
true.
?- current_predicate(foo/1).
fail. /* gives false in SWI-Prolog */
I do not have a conmit statement yet, so I guess I cannot yet
simulate SWI-Prolog transaction/1.