Generic Program Transformation

  • Oege de Moor
  • Ganesh Sittampalam
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1608)


When writing a program, especially in a high level language such as Haskell, the programmer is faced with a tension between abstraction and efficiency. A program that is easy to understand often fails to be efficient, while a more efficient solution often compromises clarity.


Time Complexity Transformation Rule Fusion Rule Functional Programming Minimum Depth 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Augustsson, L., Rittri, M., Synek, D.: Functional pearl: On generating unique names. Journal of Functional Programming 4, 117–123 (1994)CrossRefGoogle Scholar
  2. 2.
    Bellegarde, F.: A transformation system combining partial evaluation with term rewriting. In: Heering, J., Meinke, K., Möller, B., Nipkow, T. (eds.) HOA 1993. LNCS, vol. 816, pp. 40–55. Springer, Heidelberg (1994)Google Scholar
  3. 3.
    Bird, R.S.: Tabulation techniques for recursive programs. Computing Surveys 12(4), 403–417 (1980)zbMATHCrossRefMathSciNetGoogle Scholar
  4. 4.
    Bird, R.S.: The promotion and accumulation strategies in functional programming. ACM Transactions on Programming Languages and Systems 6(4), 487–504 (1984)zbMATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    Bird, R.S.: Introduction to Functional Programming in Haskell. International Series in Computer Science. Prentice Hall, Englewood Cliffs (1998)Google Scholar
  6. 6.
    Boiten, E.A.: Improving recursive functions by inverting the order of evaluation. Science of Computer Programming 18(2), 139–179 (1992)zbMATHCrossRefMathSciNetGoogle Scholar
  7. 7.
    Burstall, R.M., Darlington, J.: A transformation system for developing recursive programs. Journal of the ACM 24(1), 44–67 (1977)zbMATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    Chin, W.N.: Fusion and tupling transformations: Synergies and conflicts (invited paper). In: Fuji International Workshop on Functional and Logic Programming, pp. 176–195. World Scientific, Singapore (1995)Google Scholar
  9. 9.
    Curien, R., Qian, Z., Shi, H.: Efficient second-order matching. In: Ganzinger, H. (ed.) RTA 1996. LNCS, vol. 1103, pp. 317–331. Springer, Heidelberg (1996)Google Scholar
  10. 10.
    Gibbons, J., Jones, G.: The under-appreciated unfold. In: 3rd ACM SIGPLAN International Conference on Functional Programming 1998 (1998)Google Scholar
  11. 11.
    Hu, Z., Iwasaki, H., Takeichi, M.: Calculating accumulations. Technical Report METR 96-0-3, Department of Mathematical Engineering, University of Tokyo, Japan (1996), Available from :
  12. 12.
    Hu, Z., Iwasaki, H., Takeichi, M., Takano, A.: Tupling calculation eliminates multiple data traversals. In: 2nd ACM SIGPLAN International Conference on Functional Programming (ICFP 1997), pp. 164–175 (1997)Google Scholar
  13. 13.
    Huet, G., Lang, B.: Proving and applying program transformations expressed with second-order patterns. Acta Informatica 11, 31–55 (1978)zbMATHCrossRefMathSciNetGoogle Scholar
  14. 14.
    Launchbury, J., Sheard, T.: Warm fusion: Deriving build-catas from recursive definitions. In: Functional Programming Languages and Computer Architecture, pp. 314–323. Association for Computing Machinery (1995)Google Scholar
  15. 15.
    Milner, R.: A theory of type polymorphism in programming. Journal of Computer and System Sciences 17, 348–375 (1978)zbMATHCrossRefMathSciNetGoogle Scholar
  16. 16.
    Onoue, Y., Hu, Z., Iwasaki, H., Takeichi, M.: A calculational fusion system hylo. In: Bird, R.S., Meertens, L. (eds.) IFIP TC2 Working Conference on Algorithmic Languages and Calculi, pp. 76–106. Chapman and Hall, Boca Raton (1997)Google Scholar
  17. 17.
    Pettorossi, A.: Methodologies for transformations and memoing in applicative languages. Ph.D. thesis CST-29-84, University of Edinburgh, Scotland (1984)Google Scholar
  18. 18.
    Peyton-Jones, S.L.: The Implementation of Functional Programming Languages. Foundations of Computing Series. Prentice-Hall International, Englewood Cliffs (1994)Google Scholar
  19. 19.
    Peyton-Jones, S.L., Santos, A.L.M.: A transformation-based optimiser for haskell. Science of Computer Programming 32(1-3), 3–48 (1998)CrossRefGoogle Scholar
  20. 20.
    Swierstra, S.D., Duponcheel, L.: Deterministic, error-correcting combinatory parsers. In: Orłowska, E., Alferes, J.J., Moniz Pereira, L. (eds.) JELIA 1996. LNCS, vol. 1126, pp. 184–207. Springer, Heidelberg (1996)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Oege de Moor
    • 1
  • Ganesh Sittampalam
    • 1
  1. 1.Research GroupOxford University, Computing Laboratory ProgrammingUnited Kingdom

Personalised recommendations