Static Parallelization of Functional Programs: Elimination of Higher-Order Functions & Optimized Inlining

  • Christoph A. Herrmann
  • Christian Lengauer
  • Jan Laitenberger
  • Christian Schaller
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1685)


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.


functional programming Haskell higher-order function inlining parallelization skeletons 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    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.Google Scholar
  2. [2]
    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).CrossRefGoogle Scholar
  3. [3]
    Richard Bird. Introduction to Functional Programming using Haskell. Series in Computer Science. Prentice Hall Europe, 2nd edition, 1998.Google Scholar
  4. [4]
    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.CrossRefMathSciNetGoogle Scholar
  5. [5]
    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.Google Scholar
  6. [6]
    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.Google Scholar
  7. [7]
    Zhenjiang Hu. Personal communication at the Dagstuhl Seminar on High-Level Parallel Programming, April 1999.Google Scholar
  8. [8]
    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.Google Scholar
  9. [9]
    Lehrstuhl für Programmierung, Universität Passau. The HDC compiler project.
  10. [10]
    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.Google Scholar
  11. [11]
    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.Google Scholar
  12. [12]
    Hannu Toivonen. Discovery of Frequent Patterns in Large Data Collections. PhD thesis, Department of Computer Science, University of Helsinki, 1996.Google Scholar
  13. [13]
    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.zbMATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Christoph A. Herrmann
    • 1
  • Christian Lengauer
    • 1
  • Jan Laitenberger
    • 1
  • Christian Schaller
    • 1
  1. 1.Fakultät für Mathematik und InformatikUniversität PassauGermany

Personalised recommendations