Subject: Re: Legal ANSI comment form?
From: Erik Naggum <>
Date: 24 Aug 2002 04:46:28 +0000
Newsgroups: comp.lang.lisp
Message-ID: <>

* Duane Rettig
| Another way to look at it: If I had a CL program and it suddenly broke because
| I loaded in a module that pushed :scheme onto the *features* list, then I would
| have much less justification for being upset than if I had been using #+ignore
| or #+never and someone just stupidly pushed one of these onto *features*.

  FWIW, I think it is stupid to rely on names out of your control.  Since you
  control a whole bunch of features yourself, there are many ways to ensure
  that you test for something that you know is there instead of believe will
  not be there.  For the "future" case, you could also use a future version of
  Allegro CL.  Suppose you will never have code for Allegro CL 10.0 while you
  are working on Allegro CL 6.3 and 7.0 and perhaps 8.0.  You could write

#+(version>= 10 0) for-further-study

  to signal to your developers that this is way into the future.  You could
  also use this mechanism to ensure that features were included in a future
  version despite the cvs branch it was inserted on.  Going through the code
  to find places where a future version were specified would be a good way of
  ensuring that those future things were indeed brought into the present.

  Using a feature like debug-<package> would be OK, however, since it would
  presumably be code that would actually be processed if you requested
  debugging of that package.

  This discussion has changed my view on #+ignore and the like.  From not
  having an opinion on it to having an actual opinion on it, I have come to
  think it is wrong to use /any/ non-existing feature as a marker that some
  code should not be processed, and in particular that overloading natural
  language semantics on formal constructs is a form of intellectual sloppiness
  that should be avoided.

Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.