Bridging the Gulf: A Common Intermediate Language for ML and Haskell

Simon Peyton Jones and John Launchbury and Mark Shields and Andrew Tolmach. In Proceedings of the 25th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, California, pages 49-61, Jan 1998. [A4 ps] [bibtex]

Abstract

Compilers for ML and Haskell use intermediate languages that incorporate deeply-embedded assumptions about order of evaluation and side-effects. We propose an intermediate language in which one can compile both ML and Haskell, thereby facilitating the sharing of ideas and infrastructure, and supporting language developments that move each language in the direction of the other. Achieving this goal without compromising the ability to compile as good code as a more direct route turned out to be much more subtle than we expected. We address this challenge using monads and unpointed types, identify two alternative language designs, and explore the choices they embody.

Note

A corrigendum for this paper was distributed at the conference. Though I still agree with its overall aims and approach, I have many reservations about the technical content of this paper, and have since withdrawn my name from it.