This repo contains various small-to-medium sized experiments in dependently typed programming. For example:
Small.Printf
: type-safeprintf
Small.Fix
: n-ary (or multi-kinded) fixpoint typeData.RAL
: skew-binary random access lists (using dependent types internally)Lambda.STLC
: well-typed interpreter for simply typed lambda calculusParsing.JSON
: JSON parsing into a schema-indexed JSON type (inference and validation)SQL.*
: type-safe implementation of a query language similar to SQL (work in progress)Generic.NonRecursive
: generic parsing / pretty-printing of (non-recursive) algebraic datatypesGeneric.InitialAlg
: initial algebras of polynomial functors + genericEq
/Show
Other possible exercises:
- insertion sort with proof of correctness
- tensor algebra
- generic programming:
- generic data structures (for example generic tries)
- modelling recursive, maybe indexed algebraic datatypes
- generic programming for trees
- modelling some subset of the commutative algebra hierarchy?
- type-safe (dependent) protocol descriptions
- modelling optics
- implementing an effect system
- regexp parser
- mixfix parser (into mutually recursive AST-s)
- ...