Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #197535
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Program Sharing in Dogelog Player (Was: ANN: Dogelog Player 1.3.5 (Cyclic Terms)) |
| Date | 2025-08-20 15:11 +0200 |
| Message-ID | <1084hi9$b2pf$1@solani.org> (permalink) |
| References | <106l4o4$366q0$2@solani.org> <107nsb1$3cc5$2@solani.org> |
Dogelog Player is a Prolog system for the targets JavaScript, Python and Java. It is a mongrel, half formerly Jekejeke Prolog and half X-Prolog ZIP. Concerning program sharing (PS) it offers a compromise between full sharing in Jekejeke Prolog and no-sharing in X-Prolog ZIP. Without extra syntax like tuple (x1,..,xn) versus list [x1,..,xn] we now have frozen Prolog terms in Dogelog Player. They are beneficial for the garbage collector and provide safer mutations. Regression testing shows that our compilation schemes don’t affect the runtime. See also: Program Sharing in Dogelog Player https://medium.com/@janburse_2989/7b0d9d13cc6f Mild Shock schrieb: > > Dogelog Player is a Prolog system written > in 100% Prolog for the target platforms JavaScript, > Python and Java. We recently introduced the > display of cyclic terms in the top-level. > > As a next iteration we turned all built-ins > upside down, gave it either a visitor pattern > or union find, so that they can deal with cyclic > terms. The final step is then to untie Landin's Knot. > > The new predicates term_decompose/2 and > term_canonical/2 have found applications in > library(sequence) and library(aggregate). The > result is primarily a structural compare among > > cyclic terms, which the end-user can lift > to a canonical compare. > > See also: > > Landin's Knot in Dogelog Player > https://qiita.com/j4n_bur53/items/f096445f959998768316 > > Mild Shock schrieb: >> Dear All, >> >> We are happy to announce a new edition >> of the Dogelog player: >> >> - Enhanced Core: >> We provide internally unify_cyclic() which implements >> Hopcroft & Karp (1971) algorithm and can deal with >> cyclic terms. It is accessible via the built-in >> predicate (=)/2 and also used by the Prolog interpreter >> for solving clauses. Similar there is an enhanced >> (==)/2 available to the end-user. >> >> - Enhanced library(tools): >> The debugger is now cyclic term aware and uses a term >> factoring based on a new same_term/2 before printing >> a goal. The display is simply a conjunction Equation_1, >> .., Equation_n, Goal, where the equations are necessary >> to break cycles. As before Prolog variables are still >> printed by their serial number. >> >> - Enhanced library(session): >> The answer display is now cyclic term aware and uses >> the same term factoring as the debugger. Answer >> substitutions and cycle breaking equations are >> interspersed. We tried hard to not break old features, >> such as fresh singleton variable names, fresh multiton >> variable names and marked variables suppression. >> >> Have Fun! >> >> Jan Burse, https://www.herbrand.ai/ , 02.08.2025 >
Back to comp.lang.python | Previous | Next — Previous in thread | Find similar
ANN: Dogelog Player 1.3.5 (Cyclic Terms) Mild Shock <janburse@fastmail.fm> - 2025-08-02 15:44 +0200
Landin's Knot in Dogelog Player (Was: ANN: Dogelog Player 1.3.5 (Cyclic Terms)) Mild Shock <janburse@fastmail.fm> - 2025-08-15 19:55 +0200
Program Sharing in Dogelog Player (Was: ANN: Dogelog Player 1.3.5 (Cyclic Terms)) Mild Shock <janburse@fastmail.fm> - 2025-08-20 15:11 +0200
csiph-web