• Prototype-Based Programming in Dogelog Player (Re: ANN: Dogelog Player

    From Mild Shock@3:633/10 to All on Wed Oct 29 10:29:43 2025
    Subject: Prototype-Based Programming in Dogelog Player (Re: ANN: Dogelog Player 2.1.2 (Arrow Functions))

    Hi,

    We recently made public a new version of Dogelog
    Player that features arrow functions via the syntax
    operator (=>)/2. An interesting mark of the current
    release is that the arrow functions are automatically
    compiled and decompiled inside static clauses.

    Although our main use case was higher order logic
    programming, an alternative use case is object
    oriented logic programming. In particular we make a
    short dive into the variant of so called prototype
    based programming, also sometimes termed the
    classless approach.

    We use arrow functions (=>)/2 with a Pythonesk
    self parameter, to give dicts properties that will
    behave like methods. Creating copies, as sometimes
    suggested by Logtalk, might work well for value
    object. But to update an arrow function inside a
    prototype, we used a non-backtracking mutator.

    Bye

    See also:

    Prototype-Based Programming in Dogelog Player https://qiita.com/j4n_bur53/items/3a68d42af9b86fce8bdf

    Mild Shock schrieb:
    Dear All,

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

    - Arrow Functions:
    Using superintelligence in the loop, our development
    cycle has reached new hights of innovation and
    unprecedent delivery speed. Dogelog Player now has
    arrow functions using a (=>)/2 operator. The semantics
    is different from other offerings and based on ISO
    core standard witness calculation [7.1.1.4].

    - Arrow Compilation:
    But we did not stop at interpreted arrow functions,
    the Prolog system also offers ahead of time
    compilation, which covers both library(yall) and
    library(apply_macros) from SWI-Prolog. But it goes
    beyond, there is no need for meta predicate
    declarations, and compiled arrow functions can
    be stored inside Prolog facts.

    - Arrow Decompilation:
    The compilation compensates the additional effort
    of witness calculuation and we get same execution
    speed as SWI-Prolog. The code result is similarly
    cryptic. The good news is, the compilation can be
    easily undone. This is realized in Dogelog Player
    so that clause listing and the interactive debugger
    show the original arrow functions.

    Have Fun!

    Jan Burse, https://www.herbrand.ai/ , 27.10.2025


    --- PyGate Linux v1.5
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Mild Shock@3:633/10 to All on Wed Nov 5 17:24:47 2025
    Subject: Nested Arrows in Dogelog Player (Re: Prototype-Based Programming in Dogelog Player)

    Hi,

    This post is Dedicated to the Memory of Scheme R4RS.
    The ISO core standard witness calculation [7.1.1.4]
    is the most hated among Prolog programmers, since it
    produces false positive for nested (^)/2 occurences.
    We show how to use it nevertheless for arrow
    functions compilation.

    We identified outside-in processing as the culprit
    of false positives, the use of inside-out processing
    then shows a promissing ability to minimize free
    variable. We wish what we have done statically,
    could also be done dynamically. But we are facing
    serious new rational trees challenges.

    Bye

    See also:

    Nested Arrows in Dogelog Player
    https://medium.com/2989/1fd3fdc55ac3

    Mild Shock schrieb:
    Hi,

    We recently made public a new version of Dogelog
    Player that features arrow functions via the syntax
    operator (=>)/2. An interesting mark of the current
    release is that the arrow functions are automatically
    compiled and decompiled inside static clauses.

    Although our main use case was higher order logic
    programming, an alternative use case is object
    oriented logic programming. In particular we make a
    short dive into the variant of so called prototype
    based programming, also sometimes termed the
    classless approach.

    We use arrow functions (=>)/2 with a Pythonesk
    self parameter, to give dicts properties that will
    behave like methods. Creating copies, as sometimes
    suggested by Logtalk, might work well for value
    object. But to update an arrow function inside a
    prototype, we used a non-backtracking mutator.

    Bye

    See also:

    Prototype-Based Programming in Dogelog Player https://qiita.com/j4n_bur53/items/3a68d42af9b86fce8bdf

    --- PyGate Linux v1.5
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Mild Shock@3:633/10 to All on Wed Nov 12 01:07:36 2025
    Subject: Interpreting Arrows in Dogelog Player (Re: Nested Arrows in Dogelog Player)

    Hi,

    Dogelog Player has now arrow functions using a
    )/2 operator. The semantics is different from
    other offerings and based on ISO core standard
    witness calculation [7.1.1.4]. Its genesis is
    tied to formerly Jekejeke Prolog where we already
    experimented with this semantics.

    Departing from formerly Jekejeke Prolog we also
    provide ahead of time compilation. It turns out
    that this gives a better semantics, that can
    solve problems such as mutual recursion and
    nested arrows. We present a refinement for
    interpretative use, that shares the same properties.

    Nested functions have become quite popular in
    programming languages such as Python and JavaScript.
    More impressive inner functions can be returned
    as values and can then serve as closures for
    their outer context. Starting from variant
    keys and a new unnumbervars/3 predicate, we
    demonstrate the same for our preprocessed and
    then interpreted '$ANON'/n compounds.

    Bye

    See also:

    Interpreting Arrows in Dogelog Player https://qiita.com/j4n_bur53/items/c67a660f3e52dd1ba448


    Mild Shock schrieb:
    Hi,

    This post is Dedicated to the Memory of Scheme R4RS.
    The ISO core standard witness calculation [7.1.1.4]
    is the most hated among Prolog programmers, since it
    produces false positive for nested (^)/2 occurences.
    We show how to use it nevertheless for arrow
    functions compilation.

    We identified outside-in processing as the culprit
    of false positives, the use of inside-out processing
    then shows a promissing ability to minimize free
    variable. We wish what we have done statically,
    could also be done dynamically. But we are facing
    serious new rational trees challenges.

    Bye

    See also:

    Nested Arrows in Dogelog Player
    https://medium.com/2989/1fd3fdc55ac3

    Mild Shock schrieb:
    Hi,

    We recently made public a new version of Dogelog
    Player that features arrow functions via the syntax
    operator (=>)/2. An interesting mark of the current
    release is that the arrow functions are automatically
    compiled and decompiled inside static clauses.

    Although our main use case was higher order logic
    programming, an alternative use case is object
    oriented logic programming. In particular we make a
    short dive into the variant of so called prototype
    based programming, also sometimes termed the
    classless approach.

    We use arrow functions (=>)/2 with a Pythonesk
    self parameter, to give dicts properties that will
    behave like methods. Creating copies, as sometimes
    suggested by Logtalk, might work well for value
    object. But to update an arrow function inside a
    prototype, we used a non-backtracking mutator.

    Bye

    See also:

    Prototype-Based Programming in Dogelog Player
    https://qiita.com/j4n_bur53/items/3a68d42af9b86fce8bdf


    --- PyGate Linux v1.5
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Mild Shock@3:633/10 to All on Sun Nov 23 22:24:56 2025
    Subject: Strudel Coding in Dogelog Player (Re: Interpreting Arrows in Dogelog Player)


    Hi,

    The myster of life isn?t a problem to
    solve, but a reality to experience
    - Herbert Frank, Dune

    While toying arround with our new arrow functions.
    We found that our Dogelog Player DCG implementation
    does only provide (-->)/2 and not yet phrase/3.
    Luckily the step from (-->)/2 to phrase/3 is
    relatively small, and the upcoming release will
    feature this predicate. It turns out it can be
    used for Strudel style music coding.

    After going through some rather dry scholarly
    topics such as set versus tuple oriented processing,
    we were suddently immersed in Strudel style music
    coding by passing around oscillator events inside
    a Dogelog Player notebook. Although we could not
    demonstrate the same live feedback as Strudel does,
    one can perceive the magic of composing pipelines
    by earshot proximity.

    Bye

    See also:

    Strudel Coding in Dogelog Player
    https://medium.com/2989/bbb9c78fcd67

    Mild Shock schrieb:
    Hi,

    Dogelog Player has now arrow functions using a
    )/2 operator. The semantics is different from
    other offerings and based on ISO core standard
    witness calculation [7.1.1.4]. Its genesis is
    tied to formerly Jekejeke Prolog where we already
    experimented with this semantics.

    Departing from formerly Jekejeke Prolog we also
    provide ahead of time compilation. It turns out
    that this gives a better semantics, that can
    solve problems such as mutual recursion and
    nested arrows. We present a refinement for
    interpretative use, that shares the same properties.

    Nested functions have become quite popular in
    programming languages such as Python and JavaScript.
    More impressive inner functions can be returned
    as values and can then serve as closures for
    their outer context. Starting from variant
    keys and a new unnumbervars/3 predicate, we
    demonstrate the same for our preprocessed and
    then interpreted '$ANON'/n compounds.

    Bye

    See also:

    Interpreting Arrows in Dogelog Player https://qiita.com/j4n_bur53/items/c67a660f3e52dd1ba448

    --- PyGate Linux v1.5.1
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)