Abstract
Normal order functional languages (NOFLs) offer conceptual simplicity, expressive power, and attractiveness for parallel execution. However, current implementations of NOFLs on conventional von Neumann machines are not competitive with those of imperative languages. The central reasons for this poor performance include the high control overhead (e.g. demand evaluation) and fine object code granularity (e.g. SKI combinators) used in most NOFL implementations. Strictness analysis gathers information that helps to overcome these inefficiencies through optimized compilation. We propose here a rule-based strategy for such compilation, working from a new textual representation for strictness analyzed source programs. This representation offers readability and ease of manipulation, while expressing all essential strictness information, including basic block structure and block dominance and disjunction relationships. The rules presented here show how to compile this intermediate form into optimized single processor G-machine code. In addition, this representation appears to be useful for a number of other execution methods, including interpretation, compilation into conventional Lisp with “promises”, and mapping into “supercombinators” for parallel architectures.
Chapter PDF
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Burn, G. L., C. L. Hankin, and S. Abramsky. Theory and practice of strictness analysis for higher order functions. April 1985. Dept. of Computing, Imperial College of Science and Technology.
Clocksin, W.F. and Mellish, C.S. Programming in Prolog. Springer-Verlag, 1984. 2nd Edition.
Fairbairn, Jon, and Stuart C. Wray. Code generation techniques for functional languages. In Proc. Symp. on Lisp and Func. Pgmming., pages 94–104. ACM, 1986.
Hudak, P., and J. Young. A set-theoretic characterization of function strictness in the lambda calculus. In Proc. Workshop on Implementations of Functional Languages. Chalmers Univ., Aspenas, Sweden, February, 1985.
Hughes, R. J. M. Super Combinators. In Lisp and Functional Programming Conference, pages 1–10. ACM, 1982.
Hughes, J. Strictness detection in non-flat domains. Programming Research Group, Oxford.
Johnsson, T. Efficient compilation of lazy evaluation. In Proc. Symp. on Compiler Const. ACM SIGPLAN, Montreal, 1984.
Kieburtz, R. B., and M. Napierala. A studied laziness — strictness analysis with structured data types. 1985. Extended abstract, Oregon Graduate Center.
Kernighan, B.W. and Ritchie, D.M. Software Series: The C Programming Language. Prentice-Hall, Englewood Cliffs, New Jersey 07632, 1978.
Kieburtz, R. B. Abstract interpretations over infinite domains cannot terminate uniformly. February 17, 1986. Unpublished note, Dept. of Computer Science, Oregon Graduate Center.
Kuo, T.-M., and P. Mishra. On Strictness and its Analysis. In Proc. Symp. on Princ. of Pgmming. Lang.. ACM, Munich, West Germany, March, 1987. To appear.
Lindstrom, Gary. Static evaluation of functional programs. In Proc. Symposium on Compiler Construction, pages 196–206. ACM SIGPLAN, Palo Alto, CA, June, 1986.
Lindstrom, Gary, Lal George and Dowming Yeh. Optimized compilation of functional programs through strictness analysis. August 4, 1986. Technical summary.
Mycroft, A. The theory and practice of transforming call-by-need into call-by-value. In Int. Symp. on Prgmming. Springer, April, 1980. Lecture Notes in Computer Science, vol. 83.
Sheeran, Mary. Designing regular array architectures using higher order functions. In Proc. Conf. on Functional Programming Languages and Computer Architectures, pages 220–237. Springer Verlag, 1985. Lecture Notes in Computer Science, vol. 201.
Wadler, Phil. Strictness analysis on non-flat domains (by abstract interpretation over finite domains). November 10, 1985. Unpublished note, Programming Research Group, Oxford Univ.
Warren, David H. D. Applied logic: its use and implementation as a programming tool. Technical Report, SRI, Inc., 1983. Note 290.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1987 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lindstrom, G., George, L., Yeh, D. (1987). Generating efficient code from strictness annotations. In: Ehrig, H., Kowalski, R., Levi, G., Montanari, U. (eds) TAPSOFT '87. TAPSOFT 1987. Lecture Notes in Computer Science, vol 250. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0014978
Download citation
DOI: https://doi.org/10.1007/BFb0014978
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-17611-4
Online ISBN: 978-3-540-47717-4
eBook Packages: Springer Book Archive