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.