Aspects of Applicative Programming for Parallel Processing

  title={Aspects of Applicative Programming for Parallel Processing},
  author={Daniel P. Friedman and David S. Wise},
  journal={IEEE Transactions on Computers},
Early results of a project on compiling stylized recursion into stackless iterative code are reviewed as they apply to a target environment with multiprocessing. Parallelism is possible in executing the compiled image of argument evaluation (collateral argument evaluation of Algol 68), of data structure construction when suspensions are used, and of functional combinations. The last facility provides generally, concise expression for all operations performed in Lisp by mapping functions and in… 

Figures from this paper

Parallel Implementation of Functional Languages
Great hopes in the exploitation of the (implicit) parallelism inherent in functional programs have driven a number of projects. General frustration resulted wherever implementations on distributed
Performance of a multiprocessor for Applicative programs
A computational model of a multiprocessor which executes applicative programs, and the expected performance of the model is analyzed via simulation and an alternative model is proposed which alleviates system bottlenecks.
New Ideas in Parallel Lisp: Language Design, Implementation, and Programming Tools
  • R. Halstead
  • Computer Science
    Workshop on Parallel Lisp
  • 1989
Using new, elegant ideas in the areas of speculative computation, continuations, exception handling, aggregate data structures, and scheduling, it should be possible to build “second generation” parallel Lisp systems that are as powerful and elegantly structured as sequential Lisp systems.
Deleting Irrelevant Tasks in an Expression-Oriented Multiprocessor System
Parallelism gleaned from concurrent evaluation of subexpressions in a multiprocessor designed for parallel evaluation of recursive programs can lead to the generation of unnecessary computations.
A Survey of Proposed Architectures for the Execution of Functional Languages
  • S. Vegdahl
  • Computer Science
    IEEE Transactions on Computers
  • 1984
Functional and imperative programming languages are characterized and compared with regard to programming style and efficiency and an overall evaluation of proposed machines is given.
Applicative caching
S syntactic and semantic constructs providing programmer control for avoiding recomputation are suggested, incorporated into a “building-block” approach.
On language constructs for concurrent programs
The duality of procedure-oriented and message-oriented approaches, where processes communicate via message channels, are considered and the relationship between a representative collection of such constructs is considered in the framework of transformational semantics.
Parallelism in LISP
This paper examines Lisp from the point of view of parallel computation. It attempts to identify exactly where the potential for parallel execution really exists in LISP and what constructs are
Data structures for parallel execution of functional languages
Two alternative structures based on unordered collection of objects are proposed; the first, limited function, is a way for defining functions over finite and countable domains and its significant implications, mainly related with parallel architectures, are described.


Aspects of applicative programming for file systems (Preliminary Version)
The implications of recent results in semantics for applicative programming, applying suspended evaluation to the arguments of file construction functions results in an implicit synchronization of computation and output.
Concurrent Programming Concepts
The evolution of language features for multiprogramming from event queues and semaphores to critical regions and monitors is described and it is suggested that the choice of language concepts should be guided by two simple principles.
A lazy evaluator
A different way to execute pure LISP programs is presented. It delays the evaluation of parameters and list structures without ever having to perform more evaluation steps than the usual method.
Correct and optimal implementations of recursion in a simple programming language
This paper describes an implementation of recursion which is both correct and optimal in a general class of sequential languages, and therefore constitutes an attractive alternative to both “ call-by-name” and “call- by-value”.
Functional Combination
Output Driven Interpretation of Recursive Programs, or Writing Creates and Destroys Data Structures
A language design for concurrent processes
In conventional programming languages, the sequence of execution is specified by rules such as: (1) The statement "GO TO L" is followed by the statement labelled "L" (Branching rule). (2) The last
Recursive programming through table look-up
The maintenance of arbitrarily large tables of previously computed values for functions on integer domains becomes practical when those tables are built using constructor functions which suspend
LISP 1.5 Programmer's Manual
The LISP language is designed primarily for symbolic data processing used for symbolic calculations in differential and integral calculus, electrical circuit theory, mathematical logic, game playing,
Programming language semantics and closed applicative languages
This paper proposes axioms to define a sequence of language-classes; the most general is that of "programming language", the most restricted has some simple and attractive properties. Here "language"