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