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

Mild Shock <[email protected]>
Newsgroups comp.lang.python
Message-ID <[email protected]>
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/
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.