Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.prolog > #14942 > unrolled thread
| Started by | Mild Shock <janburse@fastmail.fm> |
|---|---|
| First post | 2025-10-27 13:10 +0100 |
| Last post | 2025-11-23 22:22 +0100 |
| Articles | 5 — 1 participant |
Back to article view | Back to comp.lang.prolog
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
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2025-10-27 13:10 +0100 |
| Subject | ANN: 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]
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2025-10-29 10:26 +0100 |
| Subject | Prototype-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]
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2025-11-05 17:22 +0100 |
| Subject | Nested 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]
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2025-11-12 01:01 +0100 |
| Subject | Interpreting 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]
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2025-11-23 22:22 +0100 |
| Subject | Strudel 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