Information about my programming language project Lemma

For a while I’ve been working on a compiler for a Haskell-like programming language called Lemma. I have a description of its syntax in a Markdown document here: Lemma Syntax Explanation

I’ve hyperfocused on syntax design because parsers are easy for me to write. But I settled on all major questions of syntax design a long time ago, and nowadays I’m focused on writing the type inference system. Like Haskell it uses Hindley-Milner with qualified types, but it also uses row polymorphism for effect computation types, and I’ve been learning from Koka and Purescrpt techniques such as allowing duplicate effects (even though they intuitively seem unnecessary), and automatically adding or removing polymorphic row variables at certain points during type inference in a way that doesn’t change the semantics of the type system.

I intend to generate GHC Core, since Lemma is lazily evaluated, but I am working on making sure my frontend can generate all of the information that GHC Core appears to require. I don’t consider myself a competent compiler writer but nobody was born a competent compiler writer.

9 Likes

Looks interesting! Do you have a link to the repository for the implementation?

No, it’s nowhere near ready for that.

Currently it’s just a parser, identifier renamer, and type checker / inferrer.

I’m interested in specifically those parts! Love to compare implementations for learning’s sake.
Please let me know when you do open source your project!