Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ANN: Dogelog, Invitation to the Moon!

47 views
Skip to first unread message

Mostowski Collapse

unread,
Dec 11, 2021, 4:12:21 PM12/11/21
to
Dear All,

The website http://www.xlog.ch/ is now open for
newsletter registration. What are the plans for
the next 10 years (sic!):

- Past: 100% Java Prolog
We had the Jekejeke Suite consisting of Runtime,
Minlog and Debugger. The Runtime was initially
100% Java, including things like consult and top-level.

- Present: 100% Prolog Prolog
This year in 2021 we managed to deliver a new breed
of Prolog, with the Dogelog Player we demonstrated
a Prolog system which had most of it written in Prolog itself.
The Dogelog Player is available for JavaScript and Python.

- Future:
The goal is to produce a Dogelog Suite consisting
of Runtime, Minlog and Debugger, all based on the new
100% Prolog approach of the Dogelog Player. It is planned
that Dogelog Suite will again cover Java, but we could
also try novel targets such as Steel Bank Common Lisp (SBCL), etc..

Disclaimer: It might take some time till the new website
http://www.xlog.ch/ shows some binaries, since we have
removed us from GitHub. We are working on it.

Have Fun! #StaySafe
Jan Burse, 11.12.2021

Mostowski Collapse

unread,
Dec 18, 2021, 7:10:13 AM12/18/21
to
Dear All,

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

- Binary Release:
The new version 0.9.7 of the Dogelog player
now masters DCG. We have decided to upload the
transpiled and compacted editions for the
JavaScript and Python platforms to www.xlog.ch
under the heading "Products".

- Quelltexte:
As an alternative to GitHub, we have now
activated pages.xlog.ch. In addition to the
source texts of the transpiler and the built-ins
of the Dogelog player, this website also
contains the manuals and the source texts of
the tutorials. Both JavaScript and Python source
code can be found.

- Blogging:
As an alternative to Gist, we are now reporting
on medium.com/@janburse_2989 about the developments
in the Dogelog player. We also use
twitter.com/dogelogch and
www.facebook.com/groups/dogelog for short messages.

Have Fun! #StaySafe
Jan Burse, 18.12.2021

Mostowski Collapse schrieb:

Mostowski Collapse

unread,
Jan 4, 2022, 12:23:51 PM1/4/22
to
Ok, here is a write-up of our christmas and newyears passtime:

Prolog Barber Paradox in JavaScript/Python
https://qiita.com/j4n_bur53/items/59128d9eeb61b86dd133

Have Fun!

Mostowski Collapse

unread,
Jan 21, 2022, 9:21:18 AM1/21/22
to
We never put a ZIP with the tutorial examples on
our website? This has now changed:

Dogelog Tutorials locally in VS Code
https://twitter.com/dogelogch/status/1484524851947782148

Dogelog Tutorials locally in VS Code
https://www.facebook.com/groups/dogelog

Mostowski Collapse

unread,
Jan 28, 2022, 1:28:49 PM1/28/22
to
We never put a ZIP with the full source of Dogelog player on
our website, including the transpiler? This has changed now:

Style Checks for Dogelog Player
https://twitter.com/dogelogch/status/1487125950588506112

Style Checks for Dogelog Player
https://www.facebook.com/groups/dogelog

Mostowski Collapse schrieb:

Mostowski Collapse

unread,
Feb 2, 2022, 6:49:59 AM2/2/22
to
The beauty of 3 valued logic! Or is it linear logic? Like the
cut the new construct isn't commutative, but its implemented
with extending true/false inside the Prolog trampoline. Was
having a look at ECLiPSe Prolog engines.

yield(+ToParent, -FromParent)
Stop the running engine in the yielded-state, and wait for resume
https://eclipseclp.org/docs/7.0/bips/kernel/engines/

I made something simpler for Dogelog player, which
can be used to bootstrap a lot of things:

'$STOP'(R): Internal only
The built-in stops the interpreter loop with return value R.

This is a forever and ever stop! Can this be used for
anything? Well here is a sleep/1 implementation,
it is assumed that the integer return value is interpreted
as the delay of a timeout promise:

sleep(T) :- '$STOP'(T).
sleep(_).

Putting everything together and we get:

Async/Await Prolog Console for JavaScript/Python
https://twitter.com/dogelogch/status/1488831738348515334

Async/Await Prolog Console for JavaScript/Python
https://www.facebook.com/groups/dogelog

With video recording!

Mostowski Collapse

unread,
Feb 17, 2022, 11:28:34 AM2/17/22
to
Some people live in the past, but the future is now!
For example I get for:

retractall((factorial(_,_))).
assertz((factorial(0,1) :- !)).
assertz((factorial(N,X) :- M is N-1, factorial(M,Y), X is N*Y)).
factorial(28,X).
http://yieldprolog.sourceforge.net/queryEditor.html

This result is a float and not a bigint:
X = 3.0488834461171384e+29;

So forget Yield Prolog, try Dogelog player,
runs in Python and JavaScript:

factorial(0,1) :- !.
factorial(N,X) :- M is N-1, factorial(M,Y), X is N*Y.
?- factorial(28,X).
http://www.xlog.ch/izytab/doclet/docs/18_live/10_reference/example01/package.html

The result is bigint:
X = 304888344611713860501504000000.

BigInt has already 92% browser support:
https://caniuse.com/bigint

Mostowski Collapse

unread,
Feb 25, 2022, 7:17:04 AM2/25/22
to
Dogelog Player has left behind the ISO core standard, and
implements living standard Prolog. What is living standard
Prolog? It aims at implementing a more flexible Prolog

than what ISO core standard prescribes, a more flexible Prolog
that reflects the reality of the majority of Prolog systems.
For example I do now have in Dogelog player:

?- op(200,fy,!).
true
?- X = foo(!).
X = foo(!).
?- X = (foo :- !).
X = (foo :- !).

http://www.xlog.ch/izytab/doclet/docs/18_live/10_reference/example01/package.html

Is this the behaviour of the majority of Prolog systems? Don't
know. Only did a sample of a few Prolog systems. SWI-Prolog
and Tau Prolog can parse the last query.

GNU Prolog and Scryer Prolog cannot parse the last query.

Mostowski Collapse

unread,
Feb 25, 2022, 4:37:10 PM2/25/22
to
It seems I must retract my hands clapping and tend now to
be more agnostic what Tau Prolog does, and wouldn't care less
what Scryer Prolog thinks Tau Prolog should do.

I found a way to convert legacy Prolog text into Scryer Prolog
format. The steps are relatively simple:

1) Consult the Prolog text in SWI-Prolog

2) Call listing/[0,1] in SWI-Prolog

SWI-Prolog puts an additional parenthesis around operators,
even when they were not there during input. Its the most crazy
thing I have ever seen, that such a conversion step is necessary.

But I don't want to start a war, must have been watching too
much Putin Ukraine recently. Should those who feel appointed
waste their time on GitHub issues and discussions. It seems

50% of Prolog GitHub is filled with this madness.
Thank god Dogelog player is not on GitHub.

Mostowski Collapse

unread,
Mar 4, 2022, 9:38:21 AM3/4/22
to
Its quite confusing that SWI-PL 7.x WASM
performs so different from SWI-PL 8.x Native.
So we did some benchmarking also for

the native platform, including formerly
Jekejeke Prolog. This will be possibly our
further setup to groom Dogelog Player:

ECLiPSe: 1360 ms
SWI: 2891 ms
GNU: 3089 ms
Jekejeke: 5130 ms
Scryer (rebis-dev, WSL): 7452 ms
Dogelog (node): 16981 ms

Woa! We still beat Scryer Prolog although
Scryer Prolog made big progress. But I guess
it doesn't have multi-argument indexing yet,

neither does Dogelog. So this will be quite
a suspense, to see the further development
framed by this new benchmark setting, provided

we see the dawn of the next weeks.

See also:

Dogelog Player reaches Functionality Milestone
https://twitter.com/dogelogch/status/1498983663924658176

Dogelog Player reaches Functionality Milestone
https://www.facebook.com/groups/dogelog
0 new messages