Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!hao!ames!sdcsvax!ucsdhub!hp-sdd!hplabs!sdcrdcf!darrelj From: darrelj@sdcrdcf.UUCP (Darrel VanBuer) Newsgroups: comp.lang.c,comp.lang.lisp Subject: Re: lisp (was: Compatibility with EBCDIC) Message-ID: <4776@sdcrdcf.UUCP> Date: Sat, 29-Aug-87 10:47:06 EDT Article-I.D.: sdcrdcf.4776 Posted: Sat Aug 29 10:47:06 1987 Date-Received: Sun, 30-Aug-87 09:13:56 EDT References: <855@tjalk.cs.vu.nl> <2683@hoptoad.uucp> <1519@sol.ARPA> <8452@utzoo.UUCP> <1880@ttrdc.UUCP> <4307@teddy.UUCP> Reply-To: darrelj@sdcrdcf.UUCP (Darrel VanBuer) Organization: Unisys - System Development Group, Santa Monica Lines: 46 Xref: mnetor comp.lang.c:4028 comp.lang.lisp:428 In article <4307@teddy.UUCP> jpn@teddy.UUCP (John P. Nelson) writes: >> Are lisps >>REALLY so diverse (disclaimer: I known nothing about lisp except that it >>is written using Lots of Insipid Silly Parentheses :-) ) that they don't >>even accept a mutual subset of the language? > >Implementations of lisp can have WILDLY different syntax. The >difference between "Common Lisp" and "Scheme" is huge. The syntax (the >"Lots of Insipid Silly Parenthesis") part is the same, but the >functions that are supported are very different. The essential framework of Lisp: cond, lambda, progn, setq, prog, function calls, car, cdr, cons, list, atom work pretty much the same in every lisp. A moderate number of functions (like append) behave the same (at least if you stick to two arguments, etc). A further set of functions tend to be sort of similar (e.g. print and read), but can vary in an amazing number of ways (e.g. does print do new line before or after printing). Still other common functions are known under different names: e.g. nreverse or dreverse for destructive reversal, put or putprop or (setf(get ... to put on a property list item. Lisps vary wildly in extensions to lambda (all? do a fixed number of ordinary arguments in the same way, beyond that, all bets are off), special forms (like cond -- vary in which are available, whether you can define more). The parts of Lisp which you can expect to work the same everywhere is perhaps a Basic sized subset. This has happened for several reasons. Before common lisp, there was never any "official" standard. Also, Lisp is a much easier language to extend than most because programs are in a data format identical to that which Lisp was designed to manipulate. As a result, there have been a number of large groups which have developed major dialects of lisp. Further, when one lisp group develops an inovative and useful extension to the language or environment, it frequently gets copied by many of the other groups (but maybe in slightly different ways because of the differing environments to which they are introduced). [I have been involved in several translations between various lisp dialects, so am familiar with the range of differing similarities. Generally, about 5% of the "features" actually used present real translation problems caused by radically different solutions to language features.] -- Darrel J. Van Buer, PhD; unisys; 2525 Colorado Ave; Santa Monica, CA 90406 (213)829-7511 x5449 KI6VY darrel@CAM.UNISYS.COM or ...{allegra,burdvax,cbosgd,hplabs,ihnp4,sdcsvax}!sdcrdcf!darrelj