The transformation calculus

  • Jacques Garrigue
Functional Programming Theory
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1026)


The lambda-calculus, by its ability to express any computable function, is theoretically able to represent any algorithm. However, notwithstanding their equivalence in expressiveness, it is not so easy to find a natural translation for algorithms described in an imperative way.

The transformation calculus, which only extends the notion of currying in lambdacalculus, appears to be able to correct this flaw, letting one implicitly manipulate a state through computations.

This calculus remains very close to lambda-calculus, and keeps most of its properties. We proved confluence of the untyped calculus, and strong-normalization in presence of a typing system.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Hassan Ait-Kaci and Jacques Garrigue. Label-selective λ-calculus: Syntax and confluence. In Proc. of the Conference on Foundations of Software Technology and Theoretical Computer Science, pages 24–40, Bombay, India, 1993. Springer-Verlag LNCS 761.Google Scholar
  2. 2.
    Gerard Boudol. Towards a lambda-calculus for concurrent and communicating systems. In Proceedings of TAPSOFT'89, pages 149–161, Berlin, Germany, 1989. Springer-Verlag, LNCS 351.Google Scholar
  3. 3.
    Kim Bruce, Roberto Di Cosmo, and Giuseppe Longo. Provable isomorphisms of types. Technical Report LIENS-90-14, LIENS, July 1990.Google Scholar
  4. 4.
    Kung Chen and Martin Odersky. A type system for a lambda calculus with assignments. In Proc. of the International Conference on Theoretical Aspects of Computer Software, pages 347–363, 1994.Google Scholar
  5. 5.
    Guy Cousineau, Pierre-Louis Curien, and Michel Mauny. The categorical abstract machine. Science of Computer Programming, 8, 1987.Google Scholar
  6. 6.
    Pierre-Louis Curien. Categorical Combinators, Sequential Algorithms, and Functional Programming. Progress in Theoretical Computer Science. Birkhauser, Boston, 1993. First edition by Pitman, 1986.Google Scholar
  7. 7.
    M. Felleisen and D.P. Friedman. A syntactic theory of sequential state. Theoretical Computer Science, 69:243–287, 1989.Google Scholar
  8. 8.
    Jacques Garrigue. Label-Selective Lambda-Calculi and Transformation Calculi. PhD thesis, University of Tokyo, Department of Information Science, March 1995.Google Scholar
  9. 9.
    Jacques Garrigue. The transformation calculus (revised version). Technical report, Kyoto University Research Institute for Mathematical Sciences, Kyoto 606-01, Japan, 1995. cf..Google Scholar
  10. 10.
    Jacques Garrigue. Dynamic binding and lexical binding in a transformation calculus. In Proc. of the Fuji International Workshop on Functional and Logic Programming. World Scientific, Singapore, to appear.Google Scholar
  11. 11.
    Jacques Garrigue and Hassan Ait-Kaci. The typed polymorphic label-selective λ-calculus. In Proc. ACM Symposium on Principles of Programming Languages, pages 35–47, 1994.Google Scholar
  12. 12.
    J.C.Guzman and P. Hudak. Single threaded polymorphic calculus. In Proc. IEEE Symposium on Logic in Computer Science, pages 333–343, 1990.Google Scholar
  13. 13.
    P. J. Landin. A correspondence between ALGOL 60 and Church's lambda notation. Communications of the ACM, 8(2–3):89–101 and 158–165, February 1965.Google Scholar
  14. 14.
    John M. Lucassen and David K. Gifford. Polymorphic effect systems. In Proc. ACM Symposium on Principles of Programming Languages, pages 47–57, San Diego, California, 1988.Google Scholar
  15. 15.
    Albert R. Meyer and Kurt Sieber. Toward fully abstract semantics for local variables. In Proc. ACM Symposium on Principles of Programming Languages, pages 191–203, 1988.Google Scholar
  16. 16.
    R. Milne and C. Strachey. A Theory of Programming Language Semantics. Chapman and Hall, 1976.Google Scholar
  17. 17.
    Robin Milner. The polyadic π-calculus: A tutorial. In Logic and Algebra of Specification, pages 203–246. NATO ASI Series, Springer Verlag, 1992.Google Scholar
  18. 18.
    Martin Odersky, Dan Rabin, and Paul Hudak. Call by name, assignment, and the lambda calculus. In Proc. ACM Symposium on Principles of Programming Languages, pages 43–56, 1993.Google Scholar
  19. 19.
    F.J. Oles. Type algebras, functor categories, and block strcutures. In N. Nivat and J.C. Reynolds, editors, Algebraic Methods in Semantics, chapter 15, pages 543–573. Cambridge University Press, 1985.Google Scholar
  20. 20.
    Simon L. Peyton Jones and Philip Wadler. Imperative functional programming. In Proc. ACM Symposium on Principles of Programming Languages, pages 71–84, 1993.Google Scholar
  21. 21.
    John C. Reynolds. The essence of ALGOL. In de Bakker and van Vliet, editors, Proc. of the International Symposium on Algorithmic Languages, pages 345–372. North Holland, 1981.Google Scholar
  22. 22.
    Vipin Swarup, Uday S. Reddy, and Evan Ireland. Assignments for applicative languages. In John Hugues, editor, Proc. ACM Symposium on Functional Programming and Computer Architectures, pages 192–214. Springer Verlag, 1991. LNCS 523.Google Scholar
  23. 23.
    Philip Wadler. Comprehending monads. In Proc. ACM Conference on LISP and Functional Programming, pages 61–78, 1990.Google Scholar
  24. 24.
    Philip Wadler. Linear types can change the world! In M. Broy and C. B. Jones, editors, Programming Concepts and Methods. North Holland, 1990.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Jacques Garrigue
    • 1
  1. 1.Research Institute for Mathematical SciencesKyoto UniversityKyotoJapan

Personalised recommendations