lambda-calculus-hs icon indicating copy to clipboard operation
lambda-calculus-hs copied to clipboard

Single file Lambda Calculus implementations demonstrating various type system features and interpretation techniques

Lambda Calculus Examples

A series of Lambda Calculus implementations starting from Simply Typed evaluation, then work up through bidirectional typechecking, normalization by evaluation, elaboration and then various type system extensions.

The goal is to provide best practices examples of all the features you might want to include in your custom language in one place.

  • [X] SimplyTypedEvaluation
  • [X] BidirectionalTypechecking
  • [X] NormalizationByEvaluation
  • [X] Elaboration
  • [X] TypedHoles
  • [X] SystemT
  • [X] Records
  • [X] Subtyping
  • [X] Inductive Types (with eliminator based pattern matching)
  • [ ] Row Polymorphism
  • [ ] System F
  • [ ] System Omega
  • [ ] Linear Types
  • [ ] Case-Trees
  • [ ] Martin-Lof Type Theory (Pi and Sigma Types)
  • [ ] Equality