The current status is that:
- The lexical analyzer is finished.
- The parser is finished.
- Simple combinator library for pretty-printing.
- Variables are identified/bound to their declarations.
- Top-level types are kind-checked.
- Rudimentary support for the gathering of type constraints.
- Rudimentary typechecking.
- Rudimentary interpreter.
- I started on a C runtime system.
For the type checker I am aiming at some hybrid between "Recursive Subtyping Revealed", "Typing Haskell in Haskell", and "Generalizing Hindley-Milner Type Inference Algorithms".
I am lazy too. This looks a lot like what I am doing, so maybe I can borrow this stuff: "Ruler: Programming Type Rules" or "Typing Haskell with an Attribute Grammar (Part I)."
God, the last two papers don't handle type classes. So now I am reading "Modelling Scoped Instances with Constraint Handling Rules."