Subject: Re: Avoiding unintentional variable capture From: Erik Naggum <erik@naggum.no> Date: 1999/09/11 Newsgroups: comp.lang.lisp Message-ID: <3146036566024257@naggum.no> * Ben Goetter | Of course a Lisp programmer always uses gensym where appropriate to write | a safe macro; thus also with Scheme, as any environment with defmacro | will also have gensym. (If the Scheme lacks defmacro, how can it be | unsafe? Unuseful, maybe, but unsafe?) as I understand this, Scheme cannot generate symbols on the fly in code in the first place, since the language is not defined in terms of sexprs, but in terms of a grammar with a lexical analysis phase, and that it wouldn't help with _possible_ conflicts, since there is no concept of "uninterned symbol" (due to lack of a package concept), they do such things with LAMBDA and its "renaming", anyway, which is lexical, and if Scheme had had DEFMACRO, it would have been tremendously dangerous, since it couldn't possibly be safe in Scheme, lacking all the machinery. at key here is understanding the Scheme community's attitude towards DEFMACRO in Common Lisp. simply put: they don't understand it, because they lack the concepts to deal with what which makes macros safe in CL. lack of concepts usually leads to an incredible amount of confusion, but the Scheme community has voluntarily rejected a number of concepts, which for a number of reasons they can't go back on, and having to do so would in turn cause massive upheaval. thus the emotional intensity. Scheme has reached its evolutionary apex, and anything you can do from here on will be perceived to reduce the language. this is OK by me, actually, since I think Scheme is hurting the Lisp community every time a Scheming bastard tries to pass Scheme off as "Lisp" sans qualifications. #:Erik -- it's election time in Norway. explains everything, doesn't it?