Journal of Functional Programming · 2013 · 297 citations · 19 references
ComputingComputer ScienceProgramming LanguagesSoftware EngineeringSyntaxData TypesFunctional ProgrammingProgramming Language DesignProgramming Language ImplementationType CheckingType SystemsConcrete Syntax ModelingDependent TypesImplicit ArgumentsPolymorphic TypesStatic Type CheckingType ClassesType ConstructorsType Theory
Abstract Many components of a dependently typed programming language are by now well understood, for example, the underlying type theory, type checking, unification and evaluation. How to combine these components into a realistic and usable high-level language is, however, folklore, discovered anew by successive language implementors. In this paper, I describe the implementation of Idris , a new dependently typed functional programming language. Idris is intended to be a general-purpose programming language and as such provides high-level concepts such as implicit syntax, type classes and do notation. I describe the high-level language and the underlying type theory, and present a tactic-based method for elaborating concrete high-level syntax with implicit arguments and type classes into a fully explicit type theory. Furthermore, I show how this method facilitates the implementation of new high-level language constructs.
19
Applicative programming with effects
Conor McBride, Ross Paterson · Journal of Functional Programming · 2007 · 402 citations · Full text
The size-change principle for program termination
Chin Soon Lee, Neil D. Jones, Amir M. Ben-Amram · 2001 · 379 citations · Full text
Simple unification-based type inference for GADTs
Simon Peyton Jones, Dimitrios Vytiniotis, Stephanie Weirich et al. · 2006 · 336 citations
Conor McBride, James McKinna · Journal of Functional Programming · 2004 · 327 citations · Full text