Date: September 28, 2026
Dear All,
We
are happy to announce a new edition of the Dogelog Player:
- Enhanced common:
Triggered by SWI-Prologs new built-ins, we did a revision
of library(cyclic) now exposing term_minimal/2 and term_decompose/2.
Turns out we could also speed-up distinct/1 and aggregate/3, by
using term_minimal/2 alone in the deduplication phase. And then
for aggregate/3 deploying a Schwartzian Transform with
term_decompose/2 in the sorting phase.
- Enhanced top-level:
We also did a revision of the top-level. For example answer
substitutions are now shown more compact, so that a query
X = f(A,Y), Y = f(B,X) can keep its shape. Further the debugger
now uses the visibility rules of listing/[0,1]. Even overriding
the provenance of goals arguments and only prompting in case
they branch back into user clauses.
- New undo/1:
Realizing the analogue to our recent rogue '$CUT'/1 for
cleanup goals, this time not scanning the choice points but
the variable trail to find undo goals, we could arrive at a
undo/1. Because of atomicity concerns, its not directly exposed,
and subsequently the user facing API has now new set_arg/3
and setup_undo/2 only.
Have Fun!