Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
TIM: A simple, lazy abstract machine to execute supercombinators
Proc. of a conference on Functional programming languages and computer architecture
Non-strict languages-programming and implementation
The Computer Journal - Special issue on Lazy functional programming
Improving the three instruction machine
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Implementing functional languages
Implementing functional languages
Global optimization by suppression of partial redundancies
Communications of the ACM
A New Sharing Mechanism for the TIM
Proceedings of the 1991 Glasgow Workshop on Functional Programming
Hi-index | 0.00 |
The declarative nature of functional programming languages causes many difficulties in their efficient implementation on conventional machines. The problem is much harder when the language has non-strict (lazy) semantics. Abstract machines serve as an intellectual aid in bridging the semantic gap between such languages and the conventional von Neumann architecture. However they become more and more complex with time as efficiency considerations force the instruction set of the machine to grow in size. In this paper we explain the phenomenon in context of the Three Instruction Machine (TIM). We then define a rationalized instruction set for TIM that allows us to view all enhancements to TIM in a uniform way. This instruction set is quite close to RISC instructions and clearly identifies the key operations on closures. Translation of functional programs to our rationalized instruction set opens up scope for various local and global optimizations. We illustrate this by showing how to build control flow graphs and perform optimizations on it. Lazy arguments in functional programs make it hard to predict evaluation order statistically. We define the notion of pseudo-lazy arguments to statically expose the control flow information, wherever possible, for doing better flow analysis.