Subject: Re: Avoiding unintentional variable capture
From: Erik Naggum <>
Date: 1999/09/11
Newsgroups: comp.lang.lisp
Message-ID: <>

* 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.

  it's election time in Norway.  explains everything, doesn't it?