The content of this module is based on the paper:
A tutorial implementation of a dependently typed lambda calculus
by Andres Löh, Conor McBride, and Wouter Swierstra
NB: The work is originally written in Haskell and uses unsafe features
This is not how we would write idiomatic Idris code.
Cf. Language.IntrinsicScoping.TypeTheory for a more idiomatic representation.
data Name : TypeNamed variables
Global : String -> NameThe most typical of name: external functions
Local : Nat -> NameWhen passing under a binder we convert a bound variable
into a `Local` free variable
Quote : Nat -> NameDuring quoting from values back to term we will be using
the `Quote` constructor
Eq NamefromInteger : Integer -> InferfromString : String -> CheckfromInteger : Integer -> CheckfromString : String -> Ty