Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.prolog > #15919

5 Minutes Implementation of Prolog catch/3 and throw/1 (Was: Dogelog in the Park: A Barriered Statechart Simulator)

From Mild Shock <janburse@fastmail.fm>
Newsgroups comp.lang.prolog
Subject 5 Minutes Implementation of Prolog catch/3 and throw/1 (Was: Dogelog in the Park: A Barriered Statechart Simulator)
Date 2026-09-14 19:24 +0200
Message-ID <1189ajq$6r7i$1@solani.org> (permalink)
References <11719f9$1cctk$1@solani.org> <117el6a$1lppc$1@solani.org>

Show all headers | View raw


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
‘$YIELD’/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 ‘$YIELD’/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

Mild Shock schrieb:
> Hi,
> 
> In 1984 David Harel wrote a charming paper
> about statecharts to visualize complex system
> state and behaviour. After a $80 million
> acquisition and the expiry of patents. The
> 2015 W3C XML standard for statecharts has
> an appendix D showing a reference implementation.
> 
> Unlike the W3C appendix D take, the simulator
> is a homomorphism of next/3, with an intercept
> for cancellations. By using maplist/3 and
> not concurrent_maplist/3 we added a barrier.
> We can now let the little dog play fetch in
> some nature park, just like in the
> Stately AI demo page.
> 
> Bye
> 
> See also:
> 
> Dogelog in the Park: A Barriered Statechart Simulator
> https://medium.com/2989/a50682d1fde8
> 
> Mild Shock schrieb:
>> Dear All,
>>
>> We are happy to announce a new edition
>> of the Dogelog Player:
>>
>> - User Time:
>> Our π-WAM channels are still pounding 1μ ping
>> pong roundtrip between JavaScript workers,
>> thanks to SharedArrayBuffer and Atomic.wait().
>> But while workers are busy with each other
>> Dogelog Player main worker will wait. Therefore
>> we introduced a new statistics "user" and time/1
>> shows user percentage for non-wait main.
>>
>> - Hack Instructions:
>> What a π-WAM worker will drive, is the Hack VM
>> an alternative to the Dogelog VM. Our first
>> version of Hack VM instruction set had 10-bit
>> jump operand and 10-bit arithmetic operand.
>> This made it difficult to run larger CLP(Z)
>> examples. So we redesigned the instuction
>> set to have one 24-bit operand.
>>
>> - Hack Compilation:
>> There is a new library(hack), which houses
>> the emulator and a new disassembler by the
>> predicate instructions/1, the later taking a
>> goal argument. The Hack VM compiler can now
>> emit jump and link instructions for disjunction.
>> It can also digest '$MARK'/1 and '$CUT'/1 from
>> the Dogelog Player surface translation, and
>> therefor it is now able to compile if-then-else.
>>
>> Have Fun!
>>
>>
>> Jan Burse, August 30, 2026, https://www.herbrand.ai/
> 

Back to comp.lang.prolog | Previous | Next — Previous in thread | Find similar | Unroll thread


Thread

ANN: Dogelog Player 2.2.6 (π-WAM if-then-else) Mild Shock <janburse@fastmail.fm> - 2026-08-30 14:59 +0200
  Dogelog in the Park: A Barriered Statechart Simulator (Was: ANN: Dogelog Player 2.2.6 (π-WAM if-then-else)) Mild Shock <janburse@fastmail.fm> - 2026-09-04 16:39 +0200
    5 Minutes Implementation of Prolog catch/3 and throw/1 (Was: Dogelog in the Park: A Barriered Statechart Simulator) Mild Shock <janburse@fastmail.fm> - 2026-09-14 19:24 +0200

csiph-web