A type-preserving compiler in Haskell

  • Authors:
  • Louis-Julien Guillemette;Stefan Monnier

  • Affiliations:
  • Université de Montréal, Montréal, PQ, Canada;Université de Montréal, Montréal, PQ, Canada

  • Venue:
  • Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

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.