next up previous contents
Next: Choice of Design Preferences Up: A C Portable LISP Previous: About the Distribution

Introduction

This document intends to serve as a guide of a LISP interpreter and compiler coded in C . It is in no means a LISP language manual or tutorial.

LISP is the oldest and most used language in the world of AI programming and symbolic manipulation . Although PROLOG with its powerful first order predicate logic functional design and built-in backtracking mechanism becomes more and more popular, it is for certain that LISP will remain the most promising computer language in the fields mentioned, for many more years. It is worth to mention that there exists hardware architectures specific to LISP and Texas instruments brought a LISP dedicated microchip into the market, in the year 1986.

Parallel to the improvements in LISP software, an academic language that was supported by Bell laboratories gained more and more interest in the professional system programming world. With the similarly developed UNIX operating system this language, namely C , started to become an indispensable standard. Nowadays there exists hundred of manufactured computers, different in capacity and size, many of which offer the purchaser a UNIX environment and even a broader class offers a C language compiler, anyway. So C has became a standard language of serious project implementation. This fact was the reason why this project has been realized: A LISP that was coded in C would be totally portable. To get a working LISP on a completely new hardware would only require a C compiler and a couple of man-hour work of a non-expert.

In addition to the interpreter a LISP tex2html_wrap_inline1791 C compiler which would take a LISP source and produce a C code would complete the picture. If this would be done then any project that had to be developed in an LISP could be realized on any computer with our system, provided that this computer supports a C compiler. After the development phase is completed the final LISP code could be compiled to a C program and then this C code could be moved around, ported to any computer and C-compiled there. So this work would not only enable a portability of LISP but also a versatility and portability of any LISP coded software.

In this document we describe the implementation of such an interpreter and compiler. The software introduced here is available from the authors.

It is something to regret that such a powerful language like LISP has not a standard. There has been effort to standardize this language, but presumably due to trading reasons and vicious academic quarrels still we are far from such a standard. Of course another reason is that LISP itself provides a unique convenience for modifying any X-LISP to become a Y-LISP. As known, LISP permits the redefinition of even the internally defined functions.

One of the attempts for a standardization was the standard LISP proposal of the Utah group. The proposal is described in ``Standard Lisp Report''[2]. This LISP was used for the implementation of some LISP based SAM systems like REDUCE. It was named STD-LISP, later Utah-STD-LISP. The LISP standard chosen for our implementation is this version.

So, this is an implementation of Utah-STD-LISP. It is not a COMMON LISP. Furthermore the authors have strong feelings that COMMON LISP is still a wrong choice for standardization and another mistake is to promote it to be ``COMMON''.




next up previous contents
Next: Choice of Design Preferences Up: A C Portable LISP Previous: About the Distribution

Gokturk UCOLUK
Fri Nov 1 21:52:13 EET 1996