Typed Lisp with Pattern Matching

Yves Cloutier

Sorry, I know this isn't specifically about Stanza, but I know Patrick, you're a lisp hacker.

Do you know about Shen?

It's pretty interesting how it's a Lisp, but also how it makes heavy use of ML-like pattern matching.  For example:

(define foldl
    F Z [] -> Z
    F Z [X | Xs] -> (foldl F (F Z X) Xs))


Hi Yves!

Yes! I have heard of Shen! Mark really designed quite a beautiful language. And he's also a fantastic writer. I've been meaning to work through "Logic, Proof, and Computation" when I find some spare time.

One of the most interesting things about Shen is the built-in Prolog engine that allows users to extend and define their own type system. As far as I know, this is one-of-a-kind. Beyond geeking out on type systems though, I haven't come up with a practical killer-use for this feature yet, but I'm sure someone will. When that happens, Shen will be the only language capable of supporting it.


Yves Cloutier

Yes, it is elegant. I'm going through the "Book of Shen" and waiting for "Logic, Proof and Computation to arrive.

I think it would be interesting to make a Shen interpreter using Stanza.  I think the S-Expression parser example would be a good starting point. Since Stanza has a type system it could maybe leverage that.

We'll see, I'll take a stab at it over the weekend to see how far I get.