• A rogue '$CUT'/1 for Dogelog Player (Re: 5 Minutes Implementation of Prolog catch/3 and throw/1)

    From Mild Shock@janburse@fastmail.fm to comp.lang.java.programmer on Thu Sep 17 15:11:28 2026
    From Newsgroup: comp.lang.java.programmer

    Hi,

    Dogelog Player is a Prolog system for the
    JavaScript, Python and Java target, mostly
    written in 100% Prolog itself. So far we only
    provided once_cleanup/2 to deal with resource
    managment. It turns out we could secure a
    call_cleanup/2 through a simple mechanism.

    Drawing on a phrasing in a BIM Prolog document
    from 1984, we could implement the post-N215
    semantics of call_cleanup/2. Since we had
    eliminated the native stack use from catch/3,
    we could again apply patterns of continuation
    manipulation for events in the continuation.

    Bye

    See also:

    A rogue rCy$CUTrCO/1 for Dogelog Player
    https://medium.com/2989/f41c71265331

    Mild Shock schrieb:
    Hi,

    Dogelog Player is a Prolog system for the
    JavaScript, Python and Java target, mostly
    written in 100% Prolog itself. Since it runs in
    cooperative multitasking enviroments, it features a
    rCy$YIELDrCO/1. We noticed that catch/3 causes some
    friction and we found a simple remedy.

    The friction was caused by a switch from Prolog,
    to Host Language and to Prolog so that rCy$YIELDrCO/1
    had to create choice points. We eleminated both.
    The new catch/3 realization can easily scale to
    millions of nestings, since it has become
    independent of the native stack.

    Bye

    See also:

    5 Minutes Implementation of Prolog catch/3 and throw/1 https://medium.com/2989/dc662b85fcb2
    --- Synchronet 3.22a-Linux NewsLink 1.2