← Back to context

Comment by eggy

3 years ago

I was considering Shen[1] for this type of use, since it is implemented in many languages. It is a Lisp with built-in Prolog. Feature list from the site's main page:

    pattern matching,
    lambda calculus consistency,
    macros for defining domain specific languages,
    optional lazy evaluation,
    static type checking based on sequent calculus,
    one of the most powerful systems for typing in functional programming,
    an integrated fully functional Prolog,
    an inbuilt compiler-compiler,
    a BSD kernel under 15 languages (Lisp, Python, Javascript, C ...)
    and operating systems (Windows, Linux, OS/X),
    is extensively documented in a book
    has nearly a decade of use.

Aditya Siram made two very good videos on Shen. You can program your front and backend in Shen given Shen is implemented in JavaScript and other PLs.

I know somebody did a port to C, but I am not sure if you can then make an exe as described for Janet.

https://www.youtube.com/watch?v=lMcRBdSdO_U

https://www.youtube.com/watch?v=BUJNyHAeAc8

You implement Kλ in your PL of choice if it is not already available, and voila, you can program in Shen!

[1] https://shenlanguage.org/

I looked into Shen recently. I ultimately decided not to use it because their remote compilation model thing seemed... cludgey.

I've since landed on Gerbil Scheme (https://cons.io) which is a modern front-end to Gambit Scheme. It seems like the perfect mix of performance, (modern) features, R*RS, and FFI that I want/need. Baring some significant bugs, it will probably be my goto Lisp going forward.

  • I am not sure what you mean by "remote compilation".

    I know there was Shen Professional that required a monthly subscription and it was on the server, however, Shen is available in different PL ports for free and local use. It is like a Haskelly Lisp. Very well thought out too with a great book that covers a lot of ground including PL history and logic.

    I used to use Gambit Scheme, and although I have two linux machines, I work on Windows for my paying jobs. Gerbil doesn't seem to talk about a Windows install. I shy away from WSL, Cygwin, and MSYS2 in general.

    I am learning Zig, and I have thought about porting Shen to Zig. The CL port of Shen is the main port (SBCL).

    • If you read into the Yggdrasil project page, it basically says ports of other platforms call others over the network:

      > By reaching out into the internals of each port using a remote web connection from the centre, we can systematically harness the work done and maintain the system using only 14 connections and not 196

      Source: https://shenlanguage.org/yggdrasil.html

      The impression I got was if you don't want to use the SBCL backend (and maybe the JS backend), the ecosystem is not super mature. I don't do any dev with(in) Windows outside of WSL, so that's not something I care about. I find Shen interesting as an academic system, but I'm not sure I would consider it for personal tooling or production code. Gerbil doesn't seem like an academic project, it aims to be a batteries included Scheme it seems.

      1 reply →

The last time I look at shen it was a complete waste of time, it was like a cooking recipe with all spices combined and then find out the food is still part frozen. Let alone no way to build programs or having 8MB of js programs etc.