Compilation of functional languages by program transformation
- 1 January 1991
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 13 (1) , 21-51
- https://doi.org/10.1145/114005.102805
Abstract
One of the most important issues concerning functional languages is the efficiency and the correctness of their implementation. We focus on sequential implementations for conventional von Neumann computers. The compilation process is described in terms of program transformations in the functional framework. The original functional expression is transformed into a functional term that can be seen as a traditional machine code. The two main steps are the compilation of the computation rule by the introduction of continuation functions and the compilation of the environment management using combinators. The advantage of this approach is that we do not have to introduce an abstract machine, which makes correctness proofs much simpler. As far as efficiency is concerned, this approach is promising since many optimizations can be described and formally justified in the functional framework.Keywords
This publication has 15 references indexed in Scilit:
- The categorical abstract machineScience of Computer Programming, 1987
- The G-machine as a representation of stack semanticsPublished by Springer Nature ,1987
- Tim: A simple, lazy abstract machine to execute supercombinatorsPublished by Springer Nature ,1987
- ORBIT: an optimizing compiler for schemePublished by Association for Computing Machinery (ACM) ,1986
- Lambda lifting: Transforming programs to recursive equationsPublished by Springer Nature ,1985
- Efficient compilation of lazy evaluationACM SIGPLAN Notices, 1984
- Properties of a Notation for Combining FunctionsJournal of the ACM, 1983
- An abstraction algorithm for combinatory logicThe Journal of Symbolic Logic, 1976
- Call-by-name, call-by-value and the λ-calculusTheoretical Computer Science, 1975
- GEDANKEN—a simple typeless language based on the principle of completeness and the reference conceptCommunications of the ACM, 1970