Applicative computing systems

Applicative computing systems, or ACS are the systems of object calculi founded on combinatory logic and lambda calculus. The only essential notion which is under consideration in these systems is the representation of object. In combinatory logic the only metaoperator is application in the sense of applying one object to another. In lambda calculus two metaoperators are used: application – the same as in combinatory logic, and functional abstraction which binds the only variable in one object.

Features

The objects generated in these systems are the functional entities with the following features:

  1. the number of argument places, or object arity, is not fixed but is enabled step by step in interactions with other objects;
  2. in a process of generating the compound object, one of its counterparts—function—is applied to the other—argument—but in other contexts they can change their roles, i.e., functions and arguments are considered on equal terms;
  3. the self-application of functions is allowed, i.e. any object can be applied to itself.

ACS gives a sound ground for applicative approach to programming.

Research challenge

Applicative computing systems' lack of storage and history sensitivity is the basic reason they have not provided a foundation for computer design. Moreover, most applicative systems employ the substitution operation of the lambda calculus as their basic operation. This operation is one of virtually unlimited power, but its complete and efficient realization presents great difficulties to the machine designer.

See also

References

  1. ↑ Wolfengagen V.E. Methods and means for computations with objects. Applicative Computational Systems. — M.: JurInfoR Ltd., «Center JurInfoR», 2004. — xvi+789 pp. ISBN 5-89158-100-0.
  2. ↑ Backus, J. (1978). "1977 Turing Award Lecture: Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs". Commun. ACM. 2 (8): 613–641. doi:10.1145/359576.359579. S2CID 16367522.

Further reading