• Landin's Knot in Dogelog Player (Re: ANN: Dogelog Player 1.3.5(Cyclic Terms))

    From Mild Shock@janburse@fastmail.fm to comp.lang.javascript on Fri Aug 15 19:56:30 2025
    From Newsgroup: comp.lang.javascript


    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

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to comp.lang.javascript on Wed Aug 20 15:12:09 2025
    From Newsgroup: comp.lang.javascript


    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
    --- Synchronet 3.21a-Linux NewsLink 1.2