Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!apple!bionet!arisia!roo!masinter From: masinter@parc.xerox.com (Larry Masinter) Newsgroups: comp.lang.lisp Subject: Re: Dumb Common Lisp question Message-ID: Date: 7 Jul 90 06:08:37 GMT References: <4204@jato.Jpl.Nasa.Gov> <1990Jun29.162248.7846@Neon.Stanford.EDU> <1005@lehi3b15.csee.Lehigh.EDU> <1990Jul4.154304.7343@Neon.Stanford.EDU> Sender: news@parc.xerox.com Distribution: usa Organization: Xerox PARC, Palo Alto, CA Lines: 30 In-reply-to: max@Neon.Stanford.EDU's message of 4 Jul 90 15:43:04 GMT Macros can have unintended interactions with lexical functions in a way that is as bad as the interaction of dynamic variables. For example, in: (defmacro double (x) (let ((y x)) (list y y))) (defun oops (list) (double list)) is the "list" referenced under double the same or different than the argument to oops? I think the effort to merge function and value cells in Common Lisp foundered, not so much because of a preference for tradition but rather that no workable replacement for Common Lisp macros could be found that retained the power without adding unacceptable complexity. It is difficult to take something as complex as Common Lisp, tweak one part and actually make it better rather than worse. Standard Scheme doesn't have macros; I believe several Scheme implementations have macros, but I don't remember the details. -- Larry Masinter (masinter@parc.xerox.com) Xerox Palo Alto Research Center (PARC) 3333 Coyote Hill Road; Palo Alto, CA USA 94304 Fax: (415) 494-4333