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


Groups > comp.lang.python > #197535

Program Sharing in Dogelog Player (Was: ANN: Dogelog Player 1.3.5 (Cyclic Terms))

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>

Show all headers | View raw


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 | NextPrevious in thread | Find similar


Thread

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