Abstract
Haskell's type system has outgrown its Hindley-Milner roots to the extent that it now stretches to the basics of dependently typed programming. In this paper, we collate and classify techniques for programming with dependent types in Haskell, and contribute some new ones. In particular, through extended examples-merge-sort and rectangular tilings-we show how to exploit Haskell's constraint solver as a theorem prover, delivering code which, as Agda programmers, we envy. We explore the compromises involved in simulating variations on the theme of the dependent function space in an attempt to help programmers put dependent types to work, and to inform the evolving language design both of Haskell and of dependently typed languages more broadly.
Original language | English |
---|---|
Title of host publication | Haskell '13: Proceedings of the 2013 ACM SIGPLAN symposium on Haskell |
Publisher | Association for Computing Machinery |
Pages | 81-92 |
Number of pages | 12 |
ISBN (Print) | 9781450323833 |
DOIs | |
Publication status | Published - Sept 2013 |
Event | 2013 ACM SIGPLAN Haskell Symposium - Boston, United States Duration: 23 Sept 2013 → 24 Sept 2013 |
Conference
Conference | 2013 ACM SIGPLAN Haskell Symposium |
---|---|
Abbreviated title | Haskell 2013 |
Country/Territory | United States |
City | Boston |
Period | 23/09/13 → 24/09/13 |
Keywords
- Data type promotion
- Dependent types
- Invariants
- Proof search
- Singletons
ASJC Scopus subject areas
- Software