Common LISP(ID:946/com014)Consensus-based common dialect of LISPAn effort begun in 1981 to provide a common dialect of LISP. The result is a large and complex language, fairly close to a superset of MacLisp. Lexical binding, data structures using defstruct and setf, closures, multiple values, types using declare, a variety of numerical types. Function calls allow optional, keyword and &rest arguments. Generic sequence can either be a list or an array. Formatted printing using escape characters. Common LISP now includes CLOS, an extended LOOP macro, condition system, pretty printing, logical pathnames. According to some postings called "Yu-Shiang Lisp", though why is not clear Related languages
References: current developments in LISP and specialized LISP hardware happening in Europe, America and Japan. This research will have major implications for computer algebra and algebra system environments. Although LISP, by its extensible nature, has always been an evolving language, unconstrained by standards, the past few years have been amongst the most active. In the field of language work there have been SCHEME-84, Common LISP, Standard LISP 85 and 3-LISP, whilst in hardware there are the continuing development of Symbolics, the arrival of Texas Instruments, several experimental machines in Japan, such as FLATS, Alpha and TAO, and the start of similar projects in Europe. How all these factors will affect future developments and implementations of REDUCE, MACSYMA and SCRATCHPAD will also be discussed. in European Conference on Computer Algebra EUROCAL 85 LNCS 204 view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details Commonality Common Lisp originated in an attempt to focus the work of several implementation groups, each of which was constructing successor implementations of MacLisp for different computers. These implementations had begun to diverge because of the differences in the implementation environments: microcoded personal computers (Zetalisp, Spice Lisp), commercial timeshared computers (NIL-the "New Implementation of Lisp''), and supercomputers (S-1 Lisp). While the differences among the several implementation environments of necessity will continue to force certain incompatibilities among the implementations, Common Lisp serves as a common dialect to which each implementation makes any necessary extensions. Portability Common Lisp intentionally excludes features that cannot be implemented easily on a broad class of machines. On the one hand, features that are difficult or expensive to implement on hardware without special microcode are avoided or provided in a more abstract and efficiently implementable form. (Examples of this are the invisible forwarding pointers and locatives of Zetalisp. Some of the problems that they solve are addressed in different ways in Common Lisp.) On the other hand, features that are useful only on certain "ordinary'' or "commercial'' processors are avoided or made optional. (An example of this is the type declaration facility, which is useful in some implementations and completely ignored in others. Type declarations are completely optional and for correct programs affect only efficiency, not semantics.) Common Lisp is designed to make it easy to write programs that depend as little as possible on machine-specific characteristics, such as word length, while allowing some variety of implementation techniques. Consistency Most Lisp implementations are internally inconsistent in that by default the interpreter and compiler may assign different semantics to correct programs. This semantic difference stems primarily from the fact that the interpreter assumes all variables to be dynamically scoped, whereas the compiler assumes all variables to be local unless explicitly directed otherwise. This difference has been the usual practice in Lisp for the sake of convenience and efficiency but can lead to very subtle bugs. The definition of Common Lisp avoids such anomalies by explicitly requiring the interpreter and compiler to impose identical semantics on correct programs so far as possible. Expressiveness Common Lisp culls what experience has shown to be the most useful and understandable constructs from not only MacLisp but also Interlisp, other Lisp dialects, and other programming languages. Constructs judged to be awkward or less useful have been excluded. (An example is the store construct of MacLisp.) Compatibility Unless there is a good reason to the contrary, Common Lisp strives to be compatible with Lisp Machine Lisp, MacLisp, and Interlisp, roughly in that order. Efficiency Common Lisp has a number of features designed to facilitate the production of high-quality compiled code in those implementations whose developers care to invest effort in an optimizing compiler. One implementation of Common Lisp, namely S-1 Lisp, already has a compiler that produces code for numerical computations that is competitive in execution speed to that produced by a Fortran compiler [11]. The S-1 Lisp compiler extends the work done in MacLisp to produce extremely efficient numerical code [19]. Power Common Lisp is a descendant of MacLisp, which has traditionally placed emphasis on providing system-building tools. Such tools may in turn be used to build the user-level packages such as Interlisp provides; these packages are not, however, part of the Common Lisp core specification. It is expected such packages will be built on top of the Common Lisp core. Stability It is intended that Common Lisp will change only slowly and with due deliberation. The various dialects that are supersets of Common Lisp may serve as laboratories within which to test language extensions, but such extensions will be added to Common Lisp only after careful examination and experimentation. The goals of Common Lisp are thus very close to those of Standard Lisp [31] and Portable Standard Lisp [51]. Common Lisp differs from Standard Lisp primarily in incorporating more features, including a richer and more complicated set of data types and more complex control structures. External link: Copy of text online in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in Computer Language Magazine 11(8) view details in SIGPLAN Notices 27(04) April 1992 view details in SIGPLAN Notices 27(04) April 1992 view details in SIGPLAN Notices 27(04) April 1992 view details in SIGPLAN Notices 27(04) April 1992 view details Resources
|