Path: utzoo!attcan!uunet!husc6!cmcl2!phri!marob!cowan From: cowan@marob.MASA.COM (John Cowan) Newsgroups: comp.lang.lisp Subject: Re: #( syntax Message-ID: <652@marob.MASA.COM> Date: 12 May 89 18:16:30 GMT References: <8905120152.AA17406@anaconda.Stanford.EDU> Reply-To: cowan@marob.masa.com (John Cowan) Organization: ESCC New York City Lines: 19 In article <8905120152.AA17406@anaconda.Stanford.EDU> rit@ANACONDA.STANFORD.EDU (Jean-Francois Rit) writes: > >I came on a strange, to me, feature of coral common lisp 1.2.1: >the following expression (setq toto #(1 2 3)) makes lisp return an error >(cannot eval). However (setq toto '#(1 2 3)) works, and toto is actually the >right vector object. >Both formulation work in lucid. >So what's happening, is the coral implementation wrong? Is it reasonable to >consider the quoted version a common denominator? Both systems are correct. The Common Lisp standard does not require general vectors to be self-quoting (numbers, characters, strings, and bit-vectors only). However, any given implementation is allowed to define semantics for extending evaluation to forms other than symbols, lists, and self-quoting objects. Lucid evidently defines general vectors as self-quoting (valid extension), whereas Coral barfs on evaluation of general vectors. To be safe and portable, always quote general vectors explicitly.