• Dogelog in the Black Forest: The Ouroboros Ring Road Puzzle (Was: ANN: Dogelog Player 2.3.1 (Task Channels))

    From Mild Shock@janburse@fastmail.fm to comp.lang.java.programmer on Sun Sep 20 17:43:39 2026
    From Newsgroup: comp.lang.java.programmer

    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
    -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/

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to comp.lang.java.programmer on Sun Sep 27 15:40:03 2026
    From Newsgroup: comp.lang.java.programmer

    Hi,

    It turns out some things are more complicated than
    the mind body problem. Without seeing an anlogue
    behind our recent rogue rCy$CUTrCO/1 and the requirements
    of an undo handler. It would have taken us another
    couple of years before implementing the
    said gadget.

    The new addition is a refined class hierarchy, where
    a class Store.Bind forms the base class of both
    Store.Variable and Store.Undo. While we can demonstrate
    the classical set_arg/3, a backtrackable change_arg/3,
    we have doubts whether we are already on the
    right path forward.

    Bye

    See also:

    Dogelog: Getting the birds from the Byrd Box model https://medium.com/2989/e75796eaa2df

    Mild Shock schrieb:
    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/


    --- Synchronet 3.22a-Linux NewsLink 1.2