How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Extracting &ohgr;'s programs from proofs in the calculus of constructions
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Definition of Standard ML
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Journal of Functional Programming
Journal of Functional Programming
System F with type equality coercions
TLDI '07 Proceedings of the 2007 ACM SIGPLAN international workshop on Types in languages design and implementation
Applicative programming with effects
Journal of Functional Programming
Singleton types here, singleton types there, singleton types everywhere
Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
The implicit calculus of constructions as a programming language with dependent types
FOSSACS'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Foundations of software science and computational structures
TLDI '12 Proceedings of the 8th ACM SIGPLAN workshop on Types in language design and implementation
System description: ATS: a language that combines programming with theorem proving
FroCoS'05 Proceedings of the 5th international conference on Frontiers of Combining Systems
The right kind of generic programming
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Dependently typed programming with singletons
Proceedings of the 2012 Haskell Symposium
System FC with explicit kind equality
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
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.