No abstract available.
Super-combinators a new implementation method for applicative languages
There is a growing interest nowadays in functional programming languages and systems, and in special hardware for executing them. Many of these implementations are based on a system called graph reduction (GR), in which a program is represented as a ...
A fixed-program machine for combinator expression evaluation
It is our purpose here to present an alternative evaluation mechanism for combinator expressions, namely a relatively straightforward compilation algorithm which translates combinators to fixed-program code for a stack machine. The resulting code is ...
Expressions as processes
We argue that the 'equal civil rights' principle inherent in the lambda calculus base of applicative languages may be extended to encompass parallelism. In our model, all applicative expressions are viewed as processes, whether they represent primitives ...
Combinatory foundation of functional programming
A proposal is described for embedding FP and a part of FFP into a system C(IN)V of Combinatory Logic generated by the 6-tuple of combinators (A,B,C*,O,L,D) under the operation of application. At the same time C(IN)V is viewed as an algebraic extension ...
Functional specifications of a text editor
This paper presents a formal specification technique, derived by combining Backus' FP systems with a simple, bottom up, syntax directed scheme. The technique is then used to provide a complete specification of a well known editor. This work was prompted ...
Experiments with a supercompiler
In this paper we present and discuss some examples of the operation of the first experimental model of a supercompiler. We have chosen our examples to serve as “exhibits” which highlight most important features of the supercompiler and intimate its ...
A parallel Prolog: The construction of a data driven model
An argument is presented for the implementation of a Prolog-like language using data driven execution, as a step towards the solution of the problems associated with multiprocessor machine architectures. To facilitate this, a number of changes and ...
How to define a language using PROLOG
There have been many papers, conferences and theses concerned with the task of defining programming languages. Yet, twenty years after McCarthy's (1962) seminal paper there is still no widely accepted method which will deal with all parts of a language ...
Logic enhancement: A method for extending logic programming languages
Languages based on first order logic have rapidly gained popularity as practical programming languages in several fields. With experience, several problems with the most popular such language, Prolog, have come to light. Several proposals for changes ...
Implementation of Interlisp on the VAX
This paper presents some of the issues involved in implementing Interlisp [19] on a VAX computer [24] with the goal of producing a version that runs under UNIX[17], specifically Berkeley VM/UNIX. This implementation has the following goals:
• To be ...
PSL: A Portable LISP System
This paper presents the implementation strategy and current status of a new Portable LISP System, PSL, based upon STANDARD LISP. PSL is written entirely in itself and is compiled with an efficient LISP compiler with machine-oriented optimizations. A ...
An overview of COMMON LISP
A dialect of LISP called “COMMON LISP” is being cooperatively developed and implemented at several sites. It is a descendant of the MACLISP family of LISP dialects, and is intended to unify the several divergent efforts of the last five years. We first ...
S-1 Common Lisp implementation
We are developing a Lisp implementation for the Lawrence Livermore National Laboratory S-1 Mark IIA computer. The dialect of Lisp is an extension of COMMON Lisp [Steele;1982], a descendant of MacLisp [Moon;1974] and Lisp Machine Lisp [Weinreb;1981]).
T: a dialect of Lisp or LAMBDA: The ultimate software tool
The T project is an experiment in language design and implementation. Its purpose is to test the thesis developed by Steele and Sussman in their series of papers about the Scheme language: that Scheme may be used as the basis for a practical programming ...
Performance of Lisp systems
This paper describes the issues involved in evaluating the performance of Lisp systems. We explore the various levels at which quantitative statements can be made about the performance of a Lisp system, giving examples from existing implementations ...
Prolog compared with LISP
This is a report on a very concrete experiment to compare the relative speeds of DEC-10 Prolog (Edinburgh implementation) and DEC-10 LISP (Texas implementation of UCI-LISP, or TLISP). The comparison was made on the occasion of programming a theorem ...
An investigation of the relative efficiencies of combinators and lambda expressions
In 'A New Implementation Technique for Applicative Languages' [Tu79a] Turner uses combinators to implement lambda expressions. This paper describes an experimental investigation of the efficiency of Turner's technique compared with more traditional ...
Improved effectiveness from a real time LISP garbage collector
This paper describes a real-time garbage collection algorithm for list processing systems. We identify two efficiency problems inherent to real-time garbage collectors, and give some evidence that the proposed algorithm tends to reduce these problems. ...
Garbage collection and task deletion in distributed applicative processing systems
The problem of automatic storage reclamation for distributed implementations of applicative languages is explored. Highly parallel distributed systems have several unique characteristics that complicate the reclamation process; in this setting, the ...
Functional geometry
A method of describing pictures is introduced. The equations, which describe the appearance of a picture, also form a purely functional program which can be used to compute the set of lines necessary to plot the picture on a graphical device. The method ...
A scheme for implementing functional values on a stack machine
In this paper we describe a relatively simple method for handling partial application and function valued expressions in applicative (functional) programming languages. In essence, the approach defers evaluation of function valued expressions until ...
Constant time interpretation for shallow-bound variables in the presence of mixed special/local declarations
The semantics of variables in LISP are usually centered around the compiled-code environment; in many shallow-bound systems, local variables are implemented as stack-slots in the compiled environment, but are merely converted to special (or “fluid”) ...
Data sharing in an FFP machine
The possibility of expressing data sharing in FPs is discussed. The Paterson-Wegman unification algorithm is considered, in which data sharing is indispensable to achieve efficient (linear time) execution. An FP implementation of this algorithm is shown ...
Design of a Lisp machine - FLATS
Design of a 10 MIPS Lisp machine used for symbolic algebra is presented. Besides incorporating the hardware mechanisms which greatly speed up primitive Lisp operations, the machine is equipped with parallel hashing hardware for content addressed ...
Highlights of the history of the lambda-calculus
This paper discusses about History of lambda-calculus. The lambda-calculus originated in order to study functions more carefully. It was observed by Frege in 1893 (see van Heijenoort 1967, p.355) that it suffices to restrict attention to functions of a ...
Nondeterministic call by need is neither lazy nor by name
This paper offers a definition of nondeterministic call by need and gives two alternative call by need power domain semantics for a language with McCarthy's ambiguous operator amb. amb is one of the earliest and most interesting nondeterministic ...
Toward an algebra of nondeterministic programs
Two major advantages of the FP Algebra of Programs are its mathematical tractability and the ease with which parallel evaluation may be introduced. Unfortunately, some aspects of parallelism involve nondeterministic computations which, at times, yield ...
A semantic model of types for applicative languages
If integer constants are added to the syntax of the pure lambda calculus, then primitive integer values have to be added to the underlying domain V of values. Unlike functions, primitive values should not be applied; we want a run-time error to occur if ...
The semantics of lazy (and industrious) evaluation
Since the publication of two influential papers on lazy evaluation in 1976 [Henderson and Morris, Friedman and Wise], the idea has gained widespread acceptance among language theoreticians—particularly among the advocates of “functional programming” [...
Index Terms
Proceedings of the 1982 ACM symposium on LISP and functional programming
Recommendations
Acceptance Rates
| Year | Submitted | Accepted | Rate |
|---|---|---|---|
| LFP '94 | 109 | 30 | 28% |
| Overall | 109 | 30 | 28% |



