Deforestation for Higher-Order Functions
Deforestation is an automatic transformation scheme for functional programs which attempts to remove unnecessary intermediate data structures. The algorithm presented here is a variant of the original, adapted for a higher order language. A detailed description of how this may be implemented in an optimising compiler is also given.
Unable to display preview. Download preview PDF.
- L.Augustsson, Compiling pattern matching, Proc. Conf on Functional Programming languages and Computer Architecture, Nancy, France, Lecture Notes in Computer Science 201 ( Springer, Berlin, 1985 )Google Scholar
- W.N.Chin, Automatic Methods for Program Transformation, PhD Thesis, University of London, March 1990.Google Scholar
- L.Damas and R.Milner, Principle type schemes for functional programs, Proceedings of the ACM Symposium on Principles of Programming Languages 1982.Google Scholar
- N.G.DeBruijn, Lambda Calculus Notation with Nameless Dummies, Inagationes Mathematicae, vol. 34, pp 381–392.Google Scholar
- A.B.Ferguson and P.L.Wadler, When will deforestation stop? Procedings of the Glasgow Workshop on Functional Programming, Rothesay, Isle of Bute, August 1988, Research Report 89/R4, Department of Computing Science, University of Glasgow, 1989.Google Scholar
- G.W.Hamilton and S.B.Jones, Extending deforestation for First Order Functional Programs, Functional Programming, Glasgow 1991 R.Heldal, C.Kehler Holst, P.Wadler (Eds), Springer-Verlag, Workshops in Computing Science, 1991.Google Scholar
- R.Hindley, The principal type scheme of an object in combinatory logic, Transactions of the American Mathematics Society 146 29–60.Google Scholar
- P.Hudak, S.L.Peyton Jones, P.Wadler (Eds) Report on the Programming Language Haskell, Version 1.2, ACM SIGPLAN Notices, 27(5), May 1992.Google Scholar
- Simon L Peyton Jones The Implementation of Funtional Programming Languages Prentice Hall, Englewood Cliffs, NJ, 1987.Google Scholar
- Philip Wadler, Deforestation: Transforming Programs To Eliminate Trees, European Symposium on Programming, Nancy, France, Lecture Notes in Computer Science 300 Springer, Berlin, 1988.Google Scholar