This repo contains various small-to-medium sized experiments in dependently typed programming. For example:
Small.Printf: type-safeprintfSmall.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)
- ...