Skip to main content
    • Aa
    • Aa

Idris, a general-purpose dependently typed programming language: Design and implementation

  • EDWIN BRADY (a1)

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.

Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

T. Altenkirch , N. A. Danielsson , A. Löh & N. Oury (2010) Dependent types without the sugar. In Tenth International Symposium on Functional and Logic Programming (FLOPS 2010), M. Blume , N. Kobayashi & G. Vidal (eds), Lecture Notes in Computer Science 6009. Berlin, Germany: Springer, pp. 4055.

A. Asperti , W. Ricciotti , C. S. Coen & E. Tassi (2011) The Matita Interactive theorem prover. In Automated Deduction – CADE-23, Lecture Notes in Computer Science, 6803. Berlin, Germany: Springer, pp. 6469.

A. Asperti , W. Ricciotti , C. S. Coen & E. Tassi (2012) A bi-directional refinement algorithm for the calculus of (co)inductive constructions. Logical Methods Comput. Sci. 8, 149.

L. Augustsson (1985) Compiling pattern matching. In Functional Programming Languages and Computer Architecture, J.-P. Jouannaud (ed), Lecture Notes in Computer Science, vol. 201. Berlin, Germany: Springer, pp. 368381.

Y. Bertot & P. Castéran (2004) Interactive Theorem Proving and Program Development: Coq'Art: the Calculus of Inductive Constructions. Berlin, Germany: Springer.

E. Brady (2011b) Idris – Systems programming meets full dependent types. In Proceedings of the 5th ACM Workshop on Programming Languages Meets Program Verification (PLPV '11). New York, NY: ACM Press.

J. Chapman , P.-E. Dagand , C. McBride & P. Morris (2010, September) The gentle art of levitation. In Proceedings of 15th ACM SIGPLAN International Conference on Functional Programming (ICFP '10), Baltimore, MD, vol. 45.

D. Delahaye (2000) A tactic language for the system Coq. In Logic for Programming and Automated Reasoning (LPAR). New York, NY: Springer, pp. 8595.

P. Dybjer (1994) Inductive families. Form. Asp. Comput. 6 (4), 440465.

P. Hancock & A. Setzer (2000, August) Interactive programs in dependent type theory. In Proceedings of the 14th Annual Conference of the EACSL on Computer Science Logic, Oxford, UK, pp. 317331.

G. Huet (1997) The zipper. J. Funct. Program. 7 (5), 549554.

G. Kimmell , A. Stump , H. D. Eades III, P. Fu , T. Sheard , S. Weirich , C. Casinghino , V. Sjöberg , N. Collins & K. Y. Ahn (2012) Equational reasoning about programs with general recursion and call-by-value semantics. In Proceedings of the 6th ACM workshop on Programming Languages Meets Program Verification (PLPV '12), Philadelphia, PA.

C. S. Lee , N. D. Jones & A. M. Ben-Amram (2001) The size-change principle for program termination. ACM SIGPLAN Not. 36 (3), 8192.

C. McBride , H. Goguen & J. McKinna (2006). A few constructions on constructors. In Types for Proofs and Programs (TYPES 2006), Nottingham, UK.

C. McBride & R. Paterson (2008) Applicative programming with effects. J. Funct. Program. 18 (1), 113.

D. Miller (1992). Unification under a mixed prefix. J. Symb. Comput. 14, 321358.

M. Sozeau & N. Oury (2008) First-class type classes. In Theorem Proving in Higher Order Logics (TPHOLs 2008), Montreal, Canada, pp. 278293.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *


Full text views

Total number of HTML views: 0
Total number of PDF views: 61 *
Loading metrics...

Abstract views

Total abstract views: 425 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 24th March 2017. This data will be updated every 24 hours.