Categorical abstract machine
From Wikipedia, the free encyclopedia
Categorical abstract machine (CAM) — is the model of computation of a program[1], which preserves the abilities of applicative, functional or compositional style. It is based on techniques of the applicative computing.
One of the implementation approaches to functional languages is given by the machinery based on supercombinators, or SK-machine by D. Turner. The notion of CAM gives the alternative approach. The structure of CAM consists of syntactic, semantic and computational constituents. Syntax is based on the de Bruijn’s notation which overcomes the difficulties of using the bound variables. Semantics is as representative as SK-machine. The evaluations are similar to those of P. Landin’s SECD-machine. With this coverage CAM gives a sound ground for syntax, semantics and theory of computation. This comprehension arises as being influenced by the functional style of programming.
The notion of categorical abstract machine, or CAM was arisen in mid-1980th and in computer science takes a place of a kind of theory of computation for programmers. In a theory CAM is represented by Cartesian closed category (c.c.c.) and embedded into the combinatory logic. The machine instructions are the combinators-as-objects giving rise to a special kind of combinatory logic -- the categorical combinatory logic. CAM is a transparent and sound mathematical representation for the languages of functional programming. The machine code can be optimized using the equational form of a theory of computation. Using CAM the various mechanisms of computation such as recursion, lazy evaluation can be emulated as well as parameter passing: call by name, call by value etc. In a theory CAM preserves all the advantages of object approach towards programming or computing.
Contents |
[edit] de Bruijn’s notation
De Bruijn’s notation is the method of replacement for bound variables (formal parameters) which overcomes the bounding collision when substituting the formal parameters by the actual ones. This method is used in a code compiling phase for CAM. This kind of replacing the bound variables can be mentioned as “de Bruijn’s encoding” and is vital in using the calculi of lambda-conversion on the same rights as the calculi of combinatory logic.
[edit] See also
[edit] References
- ^ Cousineau G., Curien P.-L., Mauny M. The categorical abstract machine. — LNCS, 201, Functional programming languages computer architecture.-- 1985, pp.~50-64.
[edit] Further reading
- Wolfengagen, V.E. Combinatory logic in programming. Computations with objects through examples and exercises. -- 2-nd ed. -- M.: "Center JurInfoR" Ltd., 2003. -- x+337 с. ISBN 5-89158-101-9.