Abstract
Functional programs have long been recognized as attractive subjects of an implicit static parallelization because functional programming excludes artificial dependences, which would restrict parallelism. One central concept which makes functional programming a powerful paradigm is the higher-order function, which can have functions appearing in its arguments or result. We present an automatic method of eliminating higher-order functions, which is based on earlier work by Bell, Bellegarde and Hook [2]. The number of auxiliary functions added in the process is subsequently minimized by inlining transformations.
Chapter PDF
References
Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms. Series in Computer Science and Information Processing. Addison-Wesley, 1974.
Jeffrey M. Bell, Françoise Bellegarde, and James Hook. Type-driven defunctionalization. ACM SIGPLAN Notices, 32(8):25–37, 1997. Proc. ACM SIGPLAN Int. Conf. on Functional Programming (ICFP’97).
Richard Bird. Introduction to Functional Programming using Haskell. Series in Computer Science. Prentice Hall Europe, 2nd edition, 1998.
Christoph A. Herrmann and Christian Lengauer. On the space-time mapping of a class of divide-and-conquer recursions. Parallel Processing Letters, 6(4):525–537, 1996.
Christoph A. Herrmann and Christian Lengauer. Size inference of nested lists in functional programs. In Kevin Hammond, Tony Davie, and Chris Clack, editors, Proc. 10th Int. Workshop on the Implementation of Functional Languages (IFL’98), pages 346–364. Department of Computer Science, University College London, 1998.
Christoph A. Herrmann, Christian Lengauer, Robert Günz, Jan Laitenberger, and Christian Schaller. A compiler for HDC. Technical Report MIP-9907, Fakultät für Mathematik und Informatik, Universität Passau, May 1999.
Zhenjiang Hu. Personal communication at the Dagstuhl Seminar on High-Level Parallel Programming, April 1999.
Thomas Johnsson. Lambda lifting: Transforming programs to recursive equations. In Jean-Pierre Jouannaud, editor, Proc. Conf. on Functional Programming Languages and Computer Architecture (FPCA’85), LNCS 201. Springer-Verlag, 1985.
Lehrstuhl für Programmierung, Universität Passau. The HDC compiler project. http://www.fmi.uni-passau.de/cl/hdc/.
Simon L. Peyton Jones. Compiling Haskell by program transformation: A report from the trenches. In Hanne Riis Nielson, editor, Programming Languages and Systems (ESOP’96), LNCS 1058, pages 18–44. Springer-Verlag, 1996.
Christian Schaller. Elimination von Funktionen höherer Ordnung in Haskell-Programmen. Diplomarbeit, Fakultät für Mathematik und Informatik, Universität Passau, September 1998. In German.
Hannu Toivonen. Discovery of Frequent Patterns in Large Data Collections. PhD thesis, Department of Computer Science, University of Helsinki, 1996.
Andrew Tolmach and Dino P. Oliva. From ML to Ada: Strongly-typed language interoperability via source translation. J. Functional Programming, 8(4):367–412, July 1998.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Herrmann, C.A., Lengauer, C., Laitenberger, J., Schaller, C. (1999). Static Parallelization of Functional Programs: Elimination of Higher-Order Functions & Optimized Inlining. In: Amestoy, P., et al. Euro-Par’99 Parallel Processing. Euro-Par 1999. Lecture Notes in Computer Science, vol 1685. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48311-X_129
Download citation
DOI: https://doi.org/10.1007/3-540-48311-X_129
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66443-7
Online ISBN: 978-3-540-48311-3
eBook Packages: Springer Book Archive