• ANN: Dogelog Player 1.2.4 (Non-Backtracking Hashtable)

    From Mild Shock@janburse@fastmail.fm to comp.lang.javascript on Sat Nov 2 18:50:46 2024
    From Newsgroup: comp.lang.javascript


    Dear All,

    We are happy to announce a new edition of
    the Dogelog player:

    - New library(misc/dict):
    We have moved some predicates from the library(misc/json)
    into our own library(misc/dict). We made sure that the
    data structure of the Prolog dicts now follows the
    input order semantics.

    - New library(util/hash):
    To enable the implementation of hash tables, Novacore
    now has a term_hash/2 predicate. The implementation
    differs from the Prolog dict in that change_arg/3 is
    used for destructive updates. We have also dispensed
    with the input order.

    - Improved library(sequence):
    Hash tables can easily be used to model sets of keys,
    for example by using the value "true" as an indicator.
    This allowed us to re-implement the distinct/1 predicate.
    The use of numbervars/3 ensures that key variants
    are identified.

    Have Fun!

    Jan Burse, http://www.xlog.ch/ , 02.11.2024
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@janburse@fastmail.fm to comp.lang.javascript on Thu Nov 7 11:53:51 2024
    From Newsgroup: comp.lang.javascript

    A further library(util/tree) was realized, that
    uses the rules of Okasaki's Red-Black tree with
    destructive updates. change_arg/3 has become
    our favorite gadget to realize imperative
    datastructures in Prolog.

    No setup_call_cleanup/3 brakets are needed, since
    we can rely on its Prolog garbage collector
    integration. We compared hash table versus red
    black tree. For the million row challenge we see
    an overhead below 10%.

    See also:

    Okasaki Red-Black Trees in Dogelog Player https://twitter.com/dogelogch/status/1854471966234730536

    Okasaki Red-Black Trees in Dogelog Player https://www.facebook.com/groups/dogelog

    Mild Shock schrieb:

    Dear All,

    We are happy to announce a new edition of
    the Dogelog player:

    - New library(misc/dict):
      We have moved some predicates from the library(misc/json)
    into our own library(misc/dict).  We made sure that the
    data structure of the Prolog dicts now follows the
    input order semantics.

    - New library(util/hash):
      To enable the implementation of hash tables, Novacore
    now has a term_hash/2 predicate.  The implementation
    differs from the Prolog dict in that change_arg/3 is
    used for destructive updates.  We have also dispensed
    with the input order.

    - Improved library(sequence):
      Hash tables can easily be used to model sets of keys,
    for example by using the value "true" as an indicator.
    This allowed us to re-implement the distinct/1 predicate.
    The use of numbervars/3 ensures that key variants
    are identified.

    Have Fun!

    Jan Burse, http://www.xlog.ch/ , 02.11.2024

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@janburse@fastmail.fm to comp.lang.javascript on Sat Nov 16 08:23:11 2024
    From Newsgroup: comp.lang.javascript


    Dogelog Player is a Prolog system written in 100%
    Prolog. We discovered that XSB Prolog provides an
    interesting predicate unnumbervars/3 which we
    recently ported to Dogelog Player. Together with
    numbervars/3 it can be used to compile and
    execute λ-Prolog.

    We moved from Prolog to λ-Prolog without overdoing
    it. Our only concession to lambda calculus was
    alpha conversion to avoid variable clashes. We
    could not only demonstrate “what-if” queries, but
    also parametrization of unchanged
    predicate arguments.

    See also:

    Compiling λ-Prolog in Dogelog Player https://twitter.com/dogelogch/status/1857682740411355281

    Compiling λ-Prolog in Dogelog Player
    https://www.facebook.com/groups/dogelog


    --- Synchronet 3.20a-Linux NewsLink 1.114