A Framework for Point-Free Program Transformation

  • Alcino Cunha
  • Jorge Sousa Pinto
  • José Proença
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4015)


The subject of this paper is functional program transformation in the so-called point-free style. By this we mean first translating programs to a form consisting only of categorically-inspired combinators, algebraic data types defined as fixed points of functors, and implicit recursion through the use of type-parameterized recursion patterns. This form is appropriate for reasoning about programs equationally, but difficult to actually use in practice for programming. In this paper we present a collection of libraries and tools developed at Minho with the aim of supporting the automatic conversion of programs to point-free (embedded in Haskell), their manipulation and rule-driven simplification, and the (limited) automatic application of fusion for program transformation.


Data Type Strategy Combinators Recursive Function Functional Program Program Transformation 
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.
    Backus, J.: Can programming be liberated from the von Neumann style? a functional style and its algebra of programs. Communications of the ACM 21(8), 613–641 (1978)MATHCrossRefMathSciNetGoogle Scholar
  2. 2.
    Bird, R.: The promotion and accumulation strategies in transformational programming. ACM Transactions on Programming Languages and Systems 6(4), 487–504 (1984)MATHCrossRefMathSciNetGoogle Scholar
  3. 3.
    Cunha, A.: Point-free Program Calculation. PhD thesis, Departamento de Informática, Universidade do Minho (2005)Google Scholar
  4. 4.
    Cunha, A., Pinto, J.S.: Point-free program transformation. Fundamenta Informaticae 66(4), 315–352 (2005); Special Issue on Program TransformationMATHMathSciNetGoogle Scholar
  5. 5.
    Curien, P.-L.: Categorical Combinators, Sequential Algorithms, and Functional Programming, 2nd edn. Birkhuser (1993)Google Scholar
  6. 6.
    Danielsson, N.A., Jansson, P.: Chasing bottoms, a case study in program verification in the presence of partial and infinite values. In: Kozen, D. (ed.) MPC 2004. LNCS, vol. 3125, pp. 85–109. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  7. 7.
    de Moor, O., Sittampalam, G.: Generic program transformation. In: Swierstra, S.D., Oliveira, J.N. (eds.) AFP 1998. LNCS, vol. 1608, pp. 116–149. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  8. 8.
    Gibbons, J.: Calculating functional programs. In: Blackhouse, R., Crole, R.L., Gibbons, J. (eds.) Algebraic and Coalgebraic Methods in the Mathematics of Program Construction. LNCS, vol. 2297, pp. 148–203. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  9. 9.
    Hu, Z., Iwasaki, H., Takeichi, M.: Deriving structural hylomorphisms from recursive definitions. In: Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP 1996), pp. 73–82. ACM Press, New York (1996)CrossRefGoogle Scholar
  10. 10.
    Jones, M.P.: Type classes with functional dependencies. In: Smolka, G. (ed.) ESOP 2000. LNCS, vol. 1782, p. 230. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  11. 11.
    Lämmel, R., Visser, J.: Typed combinators for generic traversal. In: Krishnamurthi, S., Ramakrishnan, C.R. (eds.) PADL 2002. LNCS, vol. 2257, pp. 137–154. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  12. 12.
    Lambek, J.: From lambda calculus to cartesian closed categories. In: Seldin, J.P., Hindley, J.R. (eds.) To H. B. Curry: Essays on Combinatory Logic, pp. 375–402. Academic Press, London (1980)Google Scholar
  13. 13.
    Meijer, E., Fokkinga, M., Paterson, R.: Functional programming with bananas, lenses, envelopes and barbed wire. In: Hughes, J. (ed.) FPCA 1991. LNCS, vol. 523, Springer, Heidelberg (1991)Google Scholar
  14. 14.
    Meijer, E., Hutton, G.: Bananas in space: Extending fold and unfold to exponential types. In: Proceedings of the 7th ACM Conference on Functional Programming Languages and Computer Architecture (FPCA 1995). ACM Press, New York (1995)Google Scholar
  15. 15.
    Norell, U., Jansson, P.: Polytypic programming in haskell. In: Trinder, P., Michaelson, G.J., Peña, R. (eds.) IFL 2003. LNCS, vol. 3145, pp. 168–184. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  16. 16.
    Proença, J.: Point-free simplification. Technical Report DI-PURe-05.06.01, Universidade do Minho (2005)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Alcino Cunha
    • 1
  • Jorge Sousa Pinto
    • 1
  • José Proença
    • 1
  1. 1.CCTC / Departamento de InformáticaUniversidade do MinhoBragaPortugal

Personalised recommendations