ACM Home Page
Please provide us with feedback. Feedback
A type-preserving compiler in Haskell
Full text PdfPdf (263 KB)
Source
International Conference on Functional Programming archive
Proceeding of the 13th ACM SIGPLAN international conference on Functional programming table of contents
Victoria, BC, Canada
SESSION: Session 4 table of contents
Pages 75-86  
Year of Publication: 2008
ISBN:978-1-59593-919-7
Also published in ...
Authors
Louis-Julien Guillemette  Université de Montréal, Montréal, PQ, Canada
Stefan Monnier  Université de Montréal, Montréal, PQ, Canada
Sponsors
ACM: Association for Computing Machinery
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): n/a,   Downloads (12 Months): n/a,   Citation Count: 3
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1411204.1411218
What is a DOI?

ABSTRACT

There has been a lot of interest of late for programming languages that incorporate features from dependent type systems and proof assistants, in order to capture important invariants of the program in the types. This allows type-based program verification and is a promising compromise between plain old types and full blown Hoare logic proofs. The introduction of GADTs in GHC (and more recently type families) made such dependent typing available in an industry-quality implementation, making it possible to consider its use in large scale programs.

We have undertaken the construction of a complete compiler for System F, whose main property is that the GHC type checker verifies mechanically that each phase of the compiler properly preserves types. Our particular focus is on "types rather than proofs": reasonably few annotations that do not overwhelm the actual code.

We believe it should be possible to write such a type-preserving compiler with an amount of extra code comparable to what is necessary for typical typed intermediate languages, but with the advantage of static checking. We will show in this paper the remaining hurdles to reach this goal.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Sandrine Blazy, Zaynah Dargaye, and Xavier Leroy. Formal verification of a c compiler front-end. In International Symposium on Formal Methods, volume 4085 of Lecture Notes in Computer Science, pages 460--475, aug 2006.
2
 
3
James Cheney and Ralf Hinze. First-class phantom types. Technical Report CUCIS TR2003-1901, Cornell University, 2003.
4
5
 
6
Olivier Danvy and Andrzej Filinski. Representing control, a study of the CPS transformation. Mathematical Structures in Computer Science, 2 (4):361--391, 1992.
7
 
8
9
 
10
Louis-Julien Guillemette and Stefan Monnier. One vote for type families in Haskell! In The 9th symposium on Trends in Functional Programming, 2008.
 
11
 
12
Fairouz Kamareddine. Reviewing the classical and the de bruijn notation for λ-calculus and pure type systems. Journal of Logic and Computation, 11, 2001.
13
 
14
Nathan Linger and Tim Sheard. Programming with static invariants in Omega. Unpublished, 2004.
15
16
17
 
18
 
19
Simon Peyton-Jones et al. The Haskell Prime Report. Working Draft, 2007.
20
21
22
 
23
Tom Schrijvers, Martin Sulzmann, Simon Peyton Jones, and Manuel M. T. Chakravarty. Towards open type functions for Haskell. Presented at IFL 2007, 2007.
 
24
Zhong Shao. An overview of the FLINT/ML compiler. In International Workshop on Types in Compilation, June 1997.
25
26
27
28
29
30
31


Collaborative Colleagues:
Louis-Julien Guillemette: colleagues
Stefan Monnier: colleagues