Path: utzoo!attcan!uunet!odi!dlw From: dlw@odi.UUCP (Dan Weinreb) Newsgroups: comp.lang.lisp Subject: Re: LET vs. &aux Message-ID: <116@odi.UUCP> Date: 21 Dec 88 19:55:58 GMT References: <4400007@uicslsv> <5727@polya.Stanford.EDU> Organization: Object Design Inc., Burlington, MA Lines: 35 In-reply-to: caron@polya.Stanford.EDU's message of 19 Dec 88 01:40:04 GMT >The question is: why does &AUX even exist? is this another throwback >to Mac/Inter/Zeta-Lisp? &AUX actually predates LET. &AUX, along with &OPTIONAL and &REST, was introduced into the MIT Lisp Machine dialect (later known as Zetalisp) sometime prior to the summer of 1976 (by Richard Greenblatt). All of these &-keywords were borrowed from MDL (a.k.a Muddle), a very unusual dialect of Lisp used by a small group at MIT's Project MAC, in which they were written with double-quotes instead of the ampersand, e.g. "OPTIONAL", "AUX". They were backmigrated into Maclisp some years later. They were never in Interlisp or Scheme. At that time (1976), LET had not been codified as part of the language; many people at MIT had their own LET-like macros, all slightly different and incompatible. Soon thereafter, someone (probably Dave Moon) picked the current LET syntax and installed it as part of the basic Lisp system, implemented (originally) as a macro that expanded into a lambda-combination. This was one of the first times a macro had been installed as part of the Lisp system itself. In my own opinion, &AUX is essentially superseded by LET. I gave up using &AUX long ago, and personally don't care for it stylistically. I don't remember why it was carried into Common Lisp; I don't think it should have been. As for the implementation, it could be different in every Lisp, but for the Symbolics 3600 (and Ivory) compiler now in use, I am pretty sure that when I wrote that compiler, I did exactly as you say: transformed it into a LET*. In any case, I would be very surprised if there were any performance difference on the Symbolics 3600 family between &AUX and a top-level LET*. (I haven't actually tested this.) Dan Weinreb, Object Design Inc. (formerly of Symbolics, Inc.)