A major goal of the COMMON lisp committee was to define a lisp language with sufficient power and generality that people would be happy to stay within its confines and thus write inherently transportable code. We argu...
详细信息
ISBN:
(纸本)0897911423
A major goal of the COMMON lisp committee was to define a lisp language with sufficient power and generality that people would be happy to stay within its confines and thus write inherently transportable code. We argue that the resulting language definition is too large for many short-term and medium-term potential applications. In addition many parts of COMMON lisp cannot be implemented very efficiently on stock hardware. We further argue that the very generality of the design with its different efficiency profiles on different architectures works against the goal of transportability.
TABLOG (Tableau Logic programming.Language) is a language combining functional and logic programming.using first-order (quantifier-free) predicate logic with equality. TABLOG incorporates advantages of lisp and PROLOG...
详细信息
ISBN:
(纸本)0897911423
TABLOG (Tableau Logic programming.Language) is a language combining functional and logic programming.using first-order (quantifier-free) predicate logic with equality. TABLOG incorporates advantages of lisp and PROLOG. A program in TABLOG is a list of formulas in a first-order logic (including equality, negation, and equivalence) that is more general and more expressive than PROLOG's Horn clauses. Whereas PROLOG programs must be relational, TABLOG programs may define either relations or functions. While lisp programs yield results of a computation by returning a single output value, TABLOG programs can be relations and can produce several results simultaneously through their arguments.
This paper presents a new stepper for lisp, Zstep, which integrates a stepper with a real-time full-screen text editor to display programs and data. Zstep presents evaluation of a lisp expression by visually replacing...
详细信息
ISBN:
(纸本)0897911423
This paper presents a new stepper for lisp, Zstep, which integrates a stepper with a real-time full-screen text editor to display programs and data. Zstep presents evaluation of a lisp expression by visually replacing the expression by its value, conforming to an intuitive model of evaluation as a substitution process. The control structure of Zstep allows a user to 'zoom in' on a bug, examining the program first at a very coarse level of detail, then at increasingly finer levels until the bug is located. Zstep keeps a history of evaluations, and can be run either forward or backward. Zstep borrows several techniques from the author's example-oriented programming.environment, Tinker, including a novel approach to handling error conditions.
Engines are a new programming.language abstraction for timed preemption. In conjunction with first class continuations, engines allow the language to be extended with a time-sharing implementation of process abstracti...
详细信息
ISBN:
(纸本)0897911423
Engines are a new programming.language abstraction for timed preemption. In conjunction with first class continuations, engines allow the language to be extended with a time-sharing implementation of process abstraction facilities. To illustrate engine programming.techniques, we implement a round-robin process scheduler. The importance of simple but powerful primitives such as engines is discussed.
New control constructs are proposed to replace Prolog's notorious cut. Totality assertions are introduced to enable a language-oriented editor to display the control structure of a procedure. functional notation i...
详细信息
ISBN:
(纸本)0897911423
New control constructs are proposed to replace Prolog's notorious cut. Totality assertions are introduced to enable a language-oriented editor to display the control structure of a procedure. functional notation is presented as a syntactic extension. Data flow assertions are proposed to assert data flow properties and restrictions of logic procedures. Algorithms for their verification are given.
P. Greussay described an interpretation of recursive calls in a dynamically scoped lisp, reducing or even avoiding the memorization of return addresses and values of parameters. He called his technique 'iterative ...
详细信息
ISBN:
(纸本)0897911423
P. Greussay described an interpretation of recursive calls in a dynamically scoped lisp, reducing or even avoiding the memorization of return addresses and values of parameters. He called his technique 'iterative interpretation of tail-recursive lisp procedures'. The purpose of this paper is to describe a generalization of the cases handled by Greussay, known as 'obsolete environments': this paper describes tail-recursive calls within catches, within throws, any level of nested subr, all co-tail-recursive calls, and any combinations of these cases. The paper shows that although some stack is used, any iterative version written by the user would be less efficient. These techniques are quite different, and more general, than the ones developed for lexically-scoped lisp.
Arctic is a language for the specification and implementation of real-time control systems. Unlike more conventional languages for real-time control, which emphasize concurrency, Arctic is a stateless language in whic...
详细信息
ISBN:
(纸本)0897911423
Arctic is a language for the specification and implementation of real-time control systems. Unlike more conventional languages for real-time control, which emphasize concurrency, Arctic is a stateless language in which the relationships between system inputs, outputs and intermediate terms are expressed as operations on time-varying functions. Arctic allows discrete events or conditions to invoke and modify responses asynchronously, but because programs have no state, synchronization problems are greatly simplified. Furthermore, Arctic programs are non-sequential, and the timing of system responses is notated explicitly. This eliminates the need for the programmer to be concerned with the execution sequence, which accounts for much of the difficulty in real-time programming.
The SKIM II processor is a microcoded hardware machine for the rapid evaluation of functional languages. This paper gives details of some of the more novel methods employed by SKIM II, and resulting performance measur...
详细信息
ISBN:
(纸本)0897911423
The SKIM II processor is a microcoded hardware machine for the rapid evaluation of functional languages. This paper gives details of some of the more novel methods employed by SKIM II, and resulting performance measurements. The authors conclude that combinator reduction can still form the basis for the efficient implementation of a functional language.
In a procedurally reflective programming.language, all programs are executed not through the agency of a primitive and inaccessible interpreter, but rather by the explicit running of a program that represents that int...
详细信息
ISBN:
(纸本)0897911423
In a procedurally reflective programming.language, all programs are executed not through the agency of a primitive and inaccessible interpreter, but rather by the explicit running of a program that represents that interpreter. In the corresponding virtual machine, therefore, there are an infinite number of levels at which programs are processed, all simultaneously active. It is therefore a substantial question to show whether, and why, a reflective language is computationally tractable. We answer this question by showing how to produce an efficient implementation of a procedurally reflective language, based on the notion of a level-shifting processor. A series of general techniques, which should be applicable to reflective variants of any standard applicative or imperative programming.languages, are illustrated in a complete implementation for a particular reflective lisp dialect called 3-lisp.
As the need for high-speed computers increases, the need for multi-processors will be become more apparent. One of the major stumbling blocks to the development of useful multi-processors has been the lack of a good m...
详细信息
ISBN:
(纸本)0897911423
As the need for high-speed computers increases, the need for multi-processors will be become more apparent. One of the major stumbling blocks to the development of useful multi-processors has been the lack of a good multi-processing language - one which is both powerful and understandable to programmers. Among the most compute-intensive programs are artificial intelligence (AI) programs, and researchers hope that the potential degree of parallelism in AI programs is higher than in many other applications. In this paper we propose multi-processing extensions to lisp. Unlike other proposed multi-processing lisps, this one provides only a few very powerful and intuitive primitives rather than a number of parallel variants of familiar constructs.
暂无评论