About: Applicative programming language is a research topic. Over the lifetime, 18 publications have been published within this topic receiving 1388 citations.
TL;DR: In this paper, the authors illustrate the correspondence of data flow graphs to textual programs by means of program fragments written in Val, an applicative programming language developed at MIT for scientific applications.
Abstract: All data flow models describe computation in terms of locally controlled events; each event is the “firing” of an “actor”. There is no notion of a single point or locus of control—nothing corresponding to the program location counter of a conventional sequential computer. Since many actors may be ready to fire, these models can represent many asynchronous concurrent computational events. Nevertheless, they can guarantee an input/output behavior that is unaffected by the order in which the firing of actors is carried out. This property of data flow models—determinacy—ensures that their input/output behavior is functional. Thus the semantics of data flow graphs are closely related to the semantics of applicative programming languages, and we will illustrate the correspondence of data flow graphs to textual programs by means of program fragments written in Val, an applicative programming language developed at MIT for scientific applications.
TL;DR: A compiler for a subset of the Nqthm logic and a mechanically checked proof of its correctness is described, and a plan for completing the proof is described.
Abstract: A compiler for a subset of the Nqthm logic and a mechanically checked proof of its correctness is described. The Nqthm logic defines an applicative programming language very similar to McCarthy's pure Lisp(20). The compiler compiles programs in the Nqthm logic into the Piton assembly level language (23). The correctness of the compiler is proven by showing that the result of executing the Piton code is the same as produced by the Nqthm interpreter V&C$. The Nqthm logic defines several different abstract data types, or shells, as they are called in Nqthm. The user can also define additional shells. The definition of a shell includes the definition of a constructor function that returns new objects with the type of that shell. These objects can become garbage, so the run-time system of the compiler includes a garbage collector. The proof of the correctness of the compiler has not been entirely mechanically checked. A plan for completing the proof is described.
TL;DR: The language, which in the first instance implicitly uses the notions of multiprogramming, is extended by more explicit constructs, such that a general reduction language and data flow language with explicit parallelism, communication and concurrency is derived.
Abstract: For a simple nondeterministic applicative programming language both fixed point semantics and operational semantics are defined. The operational semantics is given by a number of computation rules (term rewriting rules) representing a data flow semantics and the possibilities of inherent parallelism are studied. The language, which in the first instance implicitly uses the notions of multiprogramming, is extended by more explicit constructs, such that finally a general reduction language and data flow language with explicit parallelism, communication and concurrency is derived. For this extended language, too, a fixed point semantics is defined based on multidomains, and an operational semantics is given in the form of computation rules modelling the evaluation process of data driven reduction als well as data flow computations.
TL;DR: In this paper, a cellular computer consisting of many processors, of two kinds, connected in the form of a tree is described, which is intended for the highly parallel execution of programs written in an applicative programming language.
Abstract: A design is disclosed for a cellular computer consisting of many processors, of two kinds, connected in the form of a tree. The computer is intended for the highly parallel execution of programs written in an applicative programming language. The program is stored in the leaf cells of the tree. The computer uses the syntactic structure of the program to guide the embedding of a network of "syntactic nodes" in the tree of machine cells, and execution of the program is accomplished through operations performed by the embedded network of nodes. This computer can execute many user programs simultaneously, it can take advantage of all the parallelism expressed in each user program (storage space permitting), and it can perform in parallel many operations below the level expressed in the user programs.
TL;DR: The semantics of data flow graphs are closely related to the semantics of applicative programming languages, and the correspondence of dataflow graphs to textual programs is illustrated by means of program fragments written in Val, an applicative language developed at MIT for scientific applications.
Abstract: All data flow models describe computation in terms of locally controlled events; each event is the “firing” of an “actor”. There is no notion of a single point or locus of control—nothing corresponding to the program location counter of a conventional sequential computer. Since many actors may be ready to fire, these models can represent many asynchronous concurrent computational events. Nevertheless, they can guarantee an input/output behavior that is unaffected by the order in which the firing of actors is carried out. This property of data flow models—determinacy—ensures that their input/output behavior is functional. Thus the semantics of data flow graphs are closely related to the semantics of applicative programming languages, and we will illustrate the correspondence of data flow graphs to textual programs by means of program fragments written in Val, an applicative programming language developed at MIT for scientific applications.