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


Groups > comp.lang.prolog > #14942 > unrolled thread

ANN: Dogelog Player 2.1.2 (Arrow Functions)

Started byMild Shock <janburse@fastmail.fm>
First post2025-10-27 13:10 +0100
Last post2025-11-23 22:22 +0100
Articles 5 — 1 participant

Back to article view | Back to comp.lang.prolog


Contents

  ANN: Dogelog Player 2.1.2 (Arrow Functions) Mild Shock <janburse@fastmail.fm> - 2025-10-27 13:10 +0100
    Prototype-Based Programming in Dogelog Player (Was: ANN: Dogelog Player 2.1.2) Mild Shock <janburse@fastmail.fm> - 2025-10-29 10:26 +0100
      Nested Arrows in Dogelog Player (Re: Prototype-Based Programming in Dogelog Player) Mild Shock <janburse@fastmail.fm> - 2025-11-05 17:22 +0100
        Interpreting Arrows in Dogelog Player (Was: Nested Arrows in Dogelog Player) Mild Shock <janburse@fastmail.fm> - 2025-11-12 01:01 +0100
          Strudel Coding in Dogelog Player (Was: Interpreting Arrows in Dogelog Player) Mild Shock <janburse@fastmail.fm> - 2025-11-23 22:22 +0100

#14942 — ANN: Dogelog Player 2.1.2 (Arrow Functions)

FromMild Shock <janburse@fastmail.fm>
Date2025-10-27 13:10 +0100
SubjectANN: Dogelog Player 2.1.2 (Arrow Functions)
Message-ID<10dnng5$lh95$2@solani.org>
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

[toc] | [next] | [standalone]


#14949 — Prototype-Based Programming in Dogelog Player (Was: ANN: Dogelog Player 2.1.2)

FromMild Shock <janburse@fastmail.fm>
Date2025-10-29 10:26 +0100
SubjectPrototype-Based Programming in Dogelog Player (Was: ANN: Dogelog Player 2.1.2)
Message-ID<10dsmja$ohv3$1@solani.org>
In reply to#14942
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

[toc] | [prev] | [next] | [standalone]


#14963 — Nested Arrows in Dogelog Player (Re: Prototype-Based Programming in Dogelog Player)

FromMild Shock <janburse@fastmail.fm>
Date2025-11-05 17:22 +0100
SubjectNested Arrows in Dogelog Player (Re: Prototype-Based Programming in Dogelog Player)
Message-ID<10eftk4$1bv$1@solani.org>
In reply to#14949
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

[toc] | [prev] | [next] | [standalone]


#14986 — Interpreting Arrows in Dogelog Player (Was: Nested Arrows in Dogelog Player)

FromMild Shock <janburse@fastmail.fm>
Date2025-11-12 01:01 +0100
SubjectInterpreting Arrows in Dogelog Player (Was: Nested Arrows in Dogelog Player)
Message-ID<10f0io2$anpg$1@solani.org>
In reply to#14963
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
> 
> 

[toc] | [prev] | [next] | [standalone]


#15041 — Strudel Coding in Dogelog Player (Was: Interpreting Arrows in Dogelog Player)

FromMild Shock <janburse@fastmail.fm>
Date2025-11-23 22:22 +0100
SubjectStrudel Coding in Dogelog Player (Was: Interpreting Arrows in Dogelog Player)
Message-ID<10fvtvf$ic8h$1@solani.org>
In reply to#14986
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

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.prolog


csiph-web