coatl is a work-in-progress dependently typed type-checker and evaluator. One day it will grow up to be a compiler.
The only target executable here is coatli
, an interactive
interpreter. It's usable now! There are three built-ins --
Type
, the type of Types, (->)
, a constructor of function
types, and (~)
, which is used to represent the dependent
function space.
We can use (~)
to represent the
easily:
the : Type ~ { a => a -> a };
the _ a = a;
Functions with multiple dependent parameters, though, become unwieldy:
const : Type ~ { a => Type ~ { b => a -> b -> a } };
const _ _ a _ = a;
An improvement to this situation is planned.
- A Tutorial Implementation of a Dependently-Typed Calculus by Andres Löh, Conor McBride and Wouter Swierstra
- Eliminating Dependent Pattern-Matching, by Healfdene Goguen, Conor McBride, and James McKinna
- Idris, a General Purpose Dependently-Typed Programming Language: Design and Implementation, by the esteemed Edwin Brady.
- Towards a practical programming language based on dependent type theory, by Ulf Norell