Dear All,
We are happy to announce a new
-aedition of the Dogelog Player:
- Enhanced catch/3:
We noticed that catch/3 causes a friction in
'$YIELD'/1. So we redesigned its implementation
by refraining from using the host programming
language stack. The engine now offers an exception
handler stack, and the Prolog interpreter trampolin
unwinds these exception handlers upon a
Prolog or host error.
- New call_cleanup/3:
The new predicate call_cleanup/3 supplants the
old predicate once_cleanup/3. Like catch/3 it
now features an implementation that refrains
from using the host programming language stack.
Its implementation makes use of a rogue '$CUT'/1
which is realized by choicepoint scanning
and continuation manipulation.
- Task Channels:
To lower the footprint of the core there are
new libraries library(timer) and library(tasks).
The later library offers a new predicate task_join/1
which is abortable. Further the library offers
predicates chan/1, recv/2 and send/2 to deal with
channels that live in the cooperative
multitasking realm.
Have Fun!
Jan Burse, September 17, 2026, https://www.herbrand.ai/
Hi,
In this post, we look back at working with cyclic
terms in a Prolog system, a feature that was
introduced in Dogelog Player around 12 months ago.
We welcome current developments like SWI-Prologs
recent term_minimum/2. They serve us as templates
to name our own library predicates.
While coinductive predicates are still in its
infancy for Prolog systems. We could nevertheless
solve the Ouroboros Ring Road puzzle via a cyclic
term modelling. The article also touches differences
among Prolog systems in cyclic term display and
the bagof/3 use case of ordering cyclic terms.
Bye
See also:
Dogelog in the Black Forest: The Ouroboros Ring Road Puzzle https://medium.com/2989/147fc5648b72
Mild Shock schrieb:
Dear All,
We are happy to announce a new
-a-aedition of the Dogelog Player:
- Enhanced catch/3:
We noticed that catch/3 causes a friction in
'$YIELD'/1. So we redesigned its implementation
by refraining from using the host programming
language stack. The engine now offers an exception
handler stack, and the Prolog interpreter trampolin
unwinds these exception handlers upon a
Prolog or host error.
- New call_cleanup/3:
The new predicate call_cleanup/3 supplants the
old predicate once_cleanup/3. Like catch/3 it
now features an implementation that refrains
from using the host programming language stack.
Its implementation makes use of a rogue '$CUT'/1
which is realized by choicepoint scanning
and continuation manipulation.
- Task Channels:
To lower the footprint of the core there are
new libraries library(timer) and library(tasks).
The later library offers a new predicate task_join/1
which is abortable. Further the library offers
predicates chan/1, recv/2 and send/2 to deal with
channels that live in the cooperative
multitasking realm.
Have Fun!
Jan Burse, September 17, 2026, https://www.herbrand.ai/
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 74 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 09:44:09 |
| Calls: | 1,194 |
| Files: | 1,353 |
| D/L today: |
2 files (1,590K bytes) |
| Messages: | 292,239 |