Wysk

A statically typed, functional language inspired by Haskell, ML, and Rust. This language is effectively a rewrite and redesign of all the prior languages I've (incompletely) implemented, but with an emphasis on modular (and ideally non-monolithic) code.

I am still fairly inexperienced when it comes to compiler development, so it follows that this project -- and its documentation -- is very much a work in progress.

Goals

Below are some of the things I'm hoping to implement. * Algebraic data types * Typeclasses/systematic overloading * Hindley-Milner type inference * Extensible records * Interactive bytecode interpreter * LLVM JIT compilation

Todo

Some reading

The following may not necessarily be directly involved within the development of this compiler, but have proven nonetheless to be valuable sources of information. * [1992] Simon Peyton Jones. Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine * [2005] Daan Leijen. Extensible records with scoped labels * [2010] The Haskell Community. The Haskell 2010 report * [2013] Susan B. Horwitz. UW CS704 notes * [2013] Dunfield and Krishnaswami. Complete and easy bidirectional typechecking for higher-rank polymorphism * [2015] Stephen Diehl. Write you a Haskell * [2020] Serrano, Have, Jones, Vytiniotis. A Quick Look at Impredicativity