Scrappy implementations of programming language ideas. Inspired by brendan's language garden
In rough order of complexity:
- math: interpreter for a simple math language
- topl_imperative: intepreter for an imperative language based on Chapter 2 of Theories of Programming Languages by Reynolds
- elab_stlc_bidirectional: bidirectional type checker and interpreter for the simply-typed lambda calculus, directly translated to Rust from brendan's OCaml implementation
- elab_stlc_codespan: STLC with nice error messages.
- elab_system_f_bidirectional: bidirectional type checker and interpreter for System F (stlc + type parameters), directly translated to Rust from brendan's OCaml implementation
- elab_dependent: bidirectional type checker and interpreter for a dependently typed language, directly translated to Rust from brendan's OCaml implementation
- pattern_matching: STLC with record types, and a first attempt at pattern matching.
- elab_dep_recs: dependently-typed language experiment to support record types.