@@ -7,6 +7,11 @@ High level view of steps we've taken to implement this new version:
7\item An evaluator for well-typed terms
7\item An evaluator for well-typed terms
8\item The important bit: a simple type checker. No unification or
8\item The important bit: a simple type checker. No unification or
11+ \item It is extremely tempting to add implicit arguments and unification to the
12+ type checker. This is what I did in the first Idris prototype: I learned
13+ that it was a bad idea! Scope is a big problem.
10\item The proof state and a tactic engine (Oleg style~\cite{mcbride-thesis}).
15\item The proof state and a tactic engine (Oleg style~\cite{mcbride-thesis}).
11\begin{itemize}
16\begin{itemize}
12 \item Dealing with names: typechecking and evaluation in a context, managing de Bruijn
17 \item Dealing with names: typechecking and evaluation in a context, managing de Bruijn
@@ -14,7 +19,8 @@ High level view of steps we've taken to implement this new version:
14 and de Bruijn indices when done.
19 and de Bruijn indices when done.
15\end{itemize}
20\end{itemize}
16\item Unification, and incorporation into the tactic engine.
21\item Unification, and incorporation into the tactic engine.
17−\item An Elaborator, as an EDSL
22+\item An Elaborator, as an EDSL, which is a language for applying primitive tactics and
23+ constructing derived tactics.
18\end{itemize}
24\end{itemize}
20For the high level language: we need nothing more than the core type theory,
26For the high level language: we need nothing more than the core type theory,