Export Citations
No abstract available.
LISP - notes on its past and future
LISP has survived for 21 years because it is an approximate local optimum in the space of programming languages. However, it has accumulated some barnacles that should be scraped off, and some long-standing opportunities for improvement have been ...
Symbolic computing with and without LISP
The advantages and disadvantages of LISP-based algebraic computing, compared to its rivals, are considered. Present features of LISP, and features desirable for the future, which generate the advantages for LISP, are identified.
Multics Emacs (Prose and Cons): A commercial text-processing system in Lisp
This paper addresses the choice of Lisp as the implementation language, and its consequences, including some of the implementation issues. The detailed history of Multics Emacs, its system-level design considerations, and its impact on Multics and its ...
Explicit parallelism in LISP-like languages
We introduce a LISP-like language whose parameter passing mechanism and control primitives allow for the creation and the synchronization of an arbitrary number of concurrent computations. The parameter passing mechanism is a parallel version of call-by-...
Continuation-based multiprocessing
Any multiprocessing facility must include three features: elementary exclusion, data protection, and process saving. While elementary exclusion must rest on some hardware facility (e.g. a test-and-set instruction), the other two requirements are ...
MULTI - a LISP based multiprocessing system
A package of LISP functions, collectively called MULTI, which extends LISP 1.5 to multiprogramming is presented. MULTI defines the notion of a process within a LISP implementation using function invocation as the only control primitive. A process is an ...
The function-class
The 'function-class' concept is introduced and explained in this paper.
The 'function-class' specifies the function's input procedure, input requirement, output requirement and output procedure. It includes the argument evaluation process in its input ...
A constructive alternative to axiomatic data type definitions
Many computer scientists advocate using axiomatic methods (such as algebraic specification) to specify a program data domain—the universe of abstract data objects and operations manipulated by a program. Unfortunately, correct axiomatizations are ...
A semantic comparison of LISP and SCHEME
We review the features of some of the major dialects of LISP, show how they are reflected in denotational treatments of their semantics and draw a series of conclusions concerning semantic design of languages, program proving and optimization. We ...
MODLISP
This paper discusses the design and implementation of MODLISP, a LISP-like language enhanced with the idea of MODes. This extension permits, but does not require, the user to declare the types of various variables, and to compile functions with the ...
Extending object oriented programming in Smalltalk
Smalltalk is an object oriented programming language with behavior invoked by passing messages between objects. Objects with similar behavior are grouped into classes. These classes form a hierarchy. When an object receives a message, the class or one ...
A System of Communicating Residential Environments
The SCREEN system is an experimental tool for development and maintenance of application software. It is organized as a System of Communicating REsidential ENvironments, where each environment may be e.g. a programming environment or an end-user ...
A session with Tinker: Interleaving program testing with program design
Tinker is an experimental interactive programming system which integrates program testing with program design. New procedures are created by working out the steps of the procedure in concrete situations. Tinker displays the results of each step as it is ...
Computing with text-graphic forms
Computing with text-graphic forms occurs when text-graphic patterns are used to direct the processing of other text-graphic patterns. The PAM graphics system was designed for just this kind of computation; PAM stands for PAttern Manipulating—PAM is a ...
The Apiary network architecture for knowledgeable systems
Creating more knowledgeable computer systems will require vastly increased computational resources. We are working on the development of a computer architecture (called the Apiary) to meet this need. In this paper we present an overview of the Apiary ...
Address/memory management for a gigantic LISP environment or, GC considered harmful
The possibility of incredibly cheap, fantastically large media for storage gives rise to a realistic LISP memory management scheme under which GC may be postponed for days, or even indefinitely; the idea is encapsulated in the acronym “DDI”—“GC? Don't ...
SKIM - The S, K, I reduction machine
SKIM is a computer built to explore pure functional programming, combinators as a machine language and the use of hardware to provide direct support for a high level language. Its design stresses simplicity and aims at providing minicomputer performance ...
HOPE: An experimental applicative language
An applicative language called HOPE is described and discussed. The underlying goal of the design and implementation effort was to produce a very simple programming language which encourages the construction of clear and manipulable programs. HOPE does ...
Computing cyclic list structures
It is argued that list structures containing cycles are useful and unobjectionable Lisp entities. If this is so, it is desirable to have a means of computing them less foreign to the equational-definition style characteristic of Lisp than are the list-...
An efficient environment allocation scheme in an interpreter for a lexically-scoped LISP
Lexically-scoped LISP dialects offer great flexibility and expressive power. Unfortunately, they tend to be inefficiently implemented, because many interpreter structures such as variable binding environments must be allocated in the heap rather than on ...
The dream of a lifetime: A lazy variable extent mechanism
We define a “rack”, a data abstraction hybrid of a register and a stack. It is used for encapsulating the behavior of the kind of register whose contents may have an extent which requires that it be saved during the execution of an unknown piece of ...
Strategies for data abstraction in LISP
The benefits of abstract data types are many and are generally agreed upon [Liskov and Zilles 1974, Linden 1976]. New languages are being constructed which provide for and enforce the use of data abstractions [Liskov et al 1977, Wulf et al 1976]. ...
Special forms in Lisp
Special forms are those expressions in the Lisp language which do not follow normal rules for evaluation. Some such forms are necessary as primitives of the language, while others may be desirable in order to improve readability, control the evaluation ...
Multiprocessing via intercommunicating LISP systems
Multiprocess environments comprising several intercommunicating LISP systems are straightforward to implement due to certain fundamental characteristics of the LISP language. Experiences with four methods of establishing the necessary communications ...
Divide and concer: Data structuring in applicative multiprocessing systems
The conc representation of lists in implementations of applicative languages is introduced. This representation is based on an operator conc which supplements the usual cons, the representation itself being able to coexist with the conventional nested-...
Compilation techniques for a control-flow concurrent LISP system
Described is a strategy for the compilation of LISP programs for a concurrent processing system in the presence of global side effects. The method supports “horizontal” concurrency, the concurrency available when two arguments of a function can be ...
On compiling embedded languages in LISP
In INTERLISP we find a number of embedded languages such as the iterative statement and the pattern match facility in the CLISP package, the editor and makefile languages and so forth. We will in this paper concentrate on the problem of extending the ...
A LISP compiler producing compact code
A compiler has been written which compiles MACLISP into a compact intermediate language called 1-code, and an 1-code interpreter has been incorporated into an existing LISP system. The 1-code “machine” has a simple stack architecture and an instruction ...
Local optimization in a compiler for stack-based Lisp machines
We describe the local optimization phase of a compiler for translating the INTERLISP dialect of LISP into stack-architecture (0-address) instruction sets. We discuss the general organization of the compiler, and then describe the set of optimization ...
ByteLisp and its Alto implementation
This paper describes in detail the most interesting aspects of ByteLisp, a transportable Lisp system architecture which implements the Interlisp dialect of Lisp, and its first implementation, on a microprogrammed minicomputer called the Alto. Two ...
Recommendations
Acceptance Rates
Year | Submitted | Accepted | Rate |
---|---|---|---|
LFP '94 | 109 | 30 | 28% |
Overall | 109 | 30 | 28% |