Summary: Chapter 1
Epigram Reloaded:
A Standalone Typechecker for ETT
James Chapman1, Thorsten Altenkirch1, Conor McBride1
Abstract Epigram, a functional programming environment with dependent types,
interacts with the programmer via an extensible high level language of program-
ming constructs which elaborates incrementally into Epigram's Type Theory,
ETT, a rather spartan -calculus with dependent types, playing the r^ole of a `core
language'. We implement a standalone typechecker for ETT in Haskell, allowing
us to reload existing libraries into the system safely without re-elaboration.
Rather than adopting a rewriting approach to computation, we use a glued
representation of values, pairing first-order syntax with a functional representation
of its semantics, computed lazily. This approach separates -reduction from -
conversion. We consequently can not only allow the -laws for -abstractions and
pairs, but also collapse each of the unit and empty types.
1.1 INTRODUCTION
Epigram2 [21, 4] is at the same time a functional programming language with
dependent types and a type-driven, interactive program development system. Its
type system is strong enough to express a wide range of program properties, from
basic structural invariants to full specifications. Types assist interactive program-