2%\documentclass[acmtoplas]{acmtrans2m}
4\usepackage[draft]{comments}
5%\usepackage[final]{comments}
6% \newcommand{\comment}[2]{[#1: #2]}
7\newcommand{\khcomment}[1]{\comment{KH}{#1}}
8\newcommand{\ebcomment}[1]{\comment{EB}{#1}}
13%\usepackage{amsmath,amssymb}
16\newenvironment{template}{\sffamily}
18\usepackage{graphics,epsfig}
30\newcommand{\Ivor}{\textsc{Ivor}}
31\newcommand{\Idris}{\textsc{Idris}}
32\newcommand{\Funl}{\textsc{Funl}}
33\newcommand{\Agda}{\textsc{Agda}}
34\newcommand{\LamPi}{$\lambda_\Pi$}
36\newcommand{\perule}[1]{\vspace*{0.1cm}\noindent
39\begin{minipage}{7.5cm}\textbf{Rule \theper:} #1\addtocounter{per}{1}
45\newcommand{\mysubsubsection}[1]{
49\newcommand{\hdecl}[1]{\texttt{#1}}
52\title[Implementation of a Practical Functional Language with Dependent Types]
53 {Implementation of a Practical Functional Programming Language with Dependent Types}
54%\subtitle{Implementing Domain Specific Languages by Overloading}
58School of Computer Science, University of St Andrews, St Andrews,
66I describe the implementation of a dependently typed functional
67programming language, \Idris{}. Much has been written about various
68aspects of dependently typed language implementation (e.g. checking
69dependent types, unification, optimisation) but nothing yet about how
70to bring it all together into a complete, practical, usable tool. This paper
71attempts to do so. In particular, I explain what is needed to turn
72concrete syntax with implicit arguments into fully elaborated type
73theory, using unification and a tactic engine.
76%\category{D.3.2}{Programming Languages}{Language
77% Classifications}[Applicative (functional) Languages]
78%\category{D.3.4}{Programming Languages}{Processors}[Compilers]
79%\terms{Languages, Verification, Performance}
80%\keywords{Dependent Types, Typechecking}
84%Author's address: Edwin Brady, School of Computer Science, North Haugh, St Andrews,
94\input{typechecking.tex}
98\input{elaboration.tex}
104\input{conclusions.tex}
106\bibliographystyle{jfp}
107\bibliography{library.bib}
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list