Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

scryer-shen: new implementation in development

591 views
Skip to first unread message

Mark

unread,
Feb 4, 2024, 12:24:39 PM2/4/24
to Shen
Hi all,

I've begun working on an implementation of Shen in Racket which integrates directly with my Scryer Prolog ISO system. Unlike other implementations so far, it's not bootstrapped from KLambda but is implemented directly in its host languages.

If interested, you can follow it here:

https://github.com/mthom/scryer-shen

It may move to another repository host once Github implements 2-factor authentication on February 20.

dr.mt...@gmail.com

unread,
Feb 5, 2024, 12:43:18 AM2/5/24
to Shen
My congratulations on this significant achievement.

Mark

Mark

unread,
Feb 6, 2024, 12:46:58 PM2/6/24
to Shen
Thank you Mark. I think I will try to present it at ELS this year. 

Incidentally, one of Scryer Prolog's contributors (the author of the Power of Prolog and the clpz, clpb, and simplex libraries, among many others), Markus Triska, works at the venue hosting the conference.

dr.mt...@gmail.com

unread,
Feb 7, 2024, 5:15:16 AM2/7/24
to Shen
What's ELS BTW?

Mark

Mark

unread,
Feb 7, 2024, 11:14:56 AM2/7/24
to Shen
The European Lisp Symposium.

dr.mt...@gmail.com

unread,
Feb 10, 2024, 1:18:45 AM2/10/24
to Shen
Right; where Shen was announced (in intention, not fact) 15 years ago in 2009.
Well, my best wishes on that.  I had a look at your page and the stuff on 
dependent types is a step forward.

The integration should naturally extend Shen's logic and type systems to allow styles 
of dependently typed programming and theorem proving akin to those found in programming 
languages like Agda and Lean.

Mark, in recognition of what you're doing here, which is very difficult btw,  and something I
did not do, I'd like to extend the recognition of the Shen Open Science prize which consists 
of a free copy of TBoS.  Since TBoS is about to enter the final 5th edition, I'll hold back until 
the new copy is out and arrange for it to be sent to your address.

Again well done.

Mark

Mark

unread,
Feb 11, 2024, 7:46:03 PM2/11/24
to Shen
Thank you, I'm honoured.

Mark

unread,
Aug 12, 2024, 2:59:57 PM8/12/24
to Shen
Scryer Shen now supports types! I'll release a blog post detailing its ~ type equality operator soon.

Joel McCracken

unread,
Aug 12, 2024, 6:30:50 PM8/12/24
to qil...@googlegroups.com
OOC, Mark, what does Racket do in this project's architecture? Does racket do most of the code evaluation, and Scryer does the prolog evaluation (for prolog? etc calls) and type checking (which IIUC uses Shen prolog internally, tho I'm not entirely sure about that, still haven't completed the TBoS)

I recall interacting with you a little bit on the Racket discord group while you were developing this; at the time I thought that this was a self-education exercise, but I see that it has very interesting goals otherwise.

Would it be feasible to implement entirely in Scryer, bypassing any need for Racket? ofc this may have a variety of other impacts.

Joel

--
You received this message because you are subscribed to the Google Groups "Shen" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qilang+un...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/qilang/bba5af3c-fc30-4fcc-a172-a73f0c591795n%40googlegroups.com.

Mark

unread,
Aug 12, 2024, 6:50:17 PM8/12/24
to Shen
Racket is responsible for expansion and evaluation of all Shen forms while Scryer is responsible for evaluating Prolog queries directly issued to it from the prolog? form and indirectly from the type system. The whole system could be implemented in Scryer Prolog but at this point it's much more performant to do it from Racket (Scryer is a performant Prolog engine but not a performant Lisp engine). Racket has unique metaprogramming strengths in addition to being based on the very fast Chez Scheme implementation, so this makes the most sense to me ATM.

Scryer Prolog is run as a subprocess and communicates with the Shen image through standard IO. Translation between Shen syntax and ISO Prolog syntax is necessary to facilitate this, of course. At start time Scryer Shen opens a debugging window that echoes some of this interaction.

Joel McCracken

unread,
Aug 12, 2024, 7:56:17 PM8/12/24
to qil...@googlegroups.com
very cool. I wonder how e.g. racklog would perform vs scryer, in order to keep it all in a single tech.

Bruno Deferrari

unread,
Aug 14, 2024, 8:40:43 AM8/14/24
to qil...@googlegroups.com
On Mon, Aug 12, 2024 at 7:50 PM Mark <markjor...@gmail.com> wrote:
Scryer Prolog is run as a subprocess and communicates with the Shen image through standard IO. Translation between Shen syntax and ISO Prolog syntax is necessary to facilitate this, of course. At start time Scryer Shen opens a debugging window that echoes some of this interaction.

Should be pretty easy for any Shen port to take advantage of Scryer Prolog then, right? That's great.

 

Mark

unread,
Aug 14, 2024, 10:39:58 AM8/14/24
to Shen
it would have to parse the strange dotted functor syntax I use to distinguish data from executable forms, but yes, it would be fairly easy.

Mark

unread,
Aug 16, 2024, 1:59:17 AM8/16/24
to Shen
Reply all
Reply to author
Forward
0 new messages