The categorical abstract machine

  • G. Cousineau
  • P-L. Curien
  • M. Mauny
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 201)


The Cartesian closed categories have been shown by several authors to provide the right framework of the model theory of λ-calculus. The second author developed this as a syntactic equivalence between two calculi, giving rise to a new kind of combinatory logic: the categorical combinatory logic, where computations can be done through simple rewrite rules, and, as usual with combinators, avoiding problems with variable name clashes. This paper goes further (though not requiring a previous knowledge of categorical combinatory logic) and describes a very simple machine where categorical terms can be considered as code acting on a graph of values. The only saving mechanism is a stack containing pointers on code or on the graph. Abstractions are handled using closures. The machine is called categorical abstract machine or CAM. The CAM is easier to grasp and prove than the SECD machine. The natural evaluation strategy in the CAM is call-by-value, but lazy evaluation can be easily incorporated. The paper discusses the implementation of a real functional programming language, ML, through the CAM. A basic acquaintance with λ-calculus is required.


Combinatory Logic Concrete Syntax Simple Machine Lazy Evaluation Cartesian Closed Category 
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. [BeCuCDS]
    G. Berry, P.L. Curien, The Kernel of the Applicative Language CDS: Theory and Practice, Proc. French-US Seminar on the Applications of Algebra to Language Definition and Compilation, Fontainebleau (Juin 1982), Cambridge University Press (1984).Google Scholar
  2. [Bru]
    N.G. De Bruijn, Lambda-calculus Notation with Maeless Dummies, a Tool for Automatic Formula Manipulation, Indag Math. 34, 381–392 (1972).Google Scholar
  3. [Ca1]
    L. Cardelli. ML under Unix, Polymorphism, Vol. I,3 (Dec. 1983).Google Scholar
  4. [Ca2]
    L. Cardelli, Compiling a Functional Language, Proc. ACM Conf. on Lisp and Functional Programming, Austin (1984).Google Scholar
  5. [Ca3]
    L. Cardelli, The Amber Machine, to appear.Google Scholar
  6. [CuTh]
    P-L. Curien, Categorical Combinators, Sequential Algorithms and Functional Programming, to appear in Pitman Series in Theoretical Computer Science.Google Scholar
  7. [GMW]
    M. Gordon, R. Milner, C. Wadsworth, Edinburgh LCF, Springer Lect. Notes in Comput. Sci., Vol. 78, (1979).Google Scholar
  8. [Handb]
    The ML Handbook, Inria technical report, (dec 84).Google Scholar
  9. [Hend]
    P. Henderson, Functional Programming: Application and Implementation, Prentice Hall International (1980).Google Scholar
  10. [Hi]
    J.R.Hindley, B.Lercher, J.P. Seldin, Combinatory Logic, Cambridge University Press (1972).Google Scholar
  11. [MauTh3]
    M. Mauny, Thèse de Troisième Cycle, to appear.Google Scholar
  12. [Mil]
    R. Milner, A proposal for Standard ML, Proc. ACM Conf. on Lisp and Functional Programming, Austin (1984).Google Scholar
  13. [Plo]
    G.D. Plotkin, Call-by-name, Call-by-value and the λ-calculus, Theoret. Comput. Sci. 1, 125–159 (1975).Google Scholar
  14. [Sua]
    A. Suarez, Thèse de troisième cycle, to appear.Google Scholar
  15. [Tu]
    D.A. Turner, A New Implementation Technique for Applicative Languages, Software Practice and Experience, Vol.9, 31–49 (1979).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1985

Authors and Affiliations

  • G. Cousineau
    • 1
  • P-L. Curien
    • 1
  • M. Mauny
    • 1
  1. 1.Université Paris VII, LITPParis Cedex 05

Personalised recommendations