Subject: Re: count symbols in a list
From: Erik Naggum <>
Date: 02 Dec 2002 16:18:24 +0000
Newsgroups: comp.lang.lisp
Message-ID: <>

* Christophe Rhodes
| I submit that
| is a conforming implementation of DOLIST (modulo extraction of
| declarations in the body).

  I see.

| Not at all -- it does not say, from which you can conclude (well, if
| you read the rest of the standard as well, and if it does not say
| anywhere) that it does not say.


| Have you read the issue that I referred to?


| one might wish to implement DOLIST by calculating the length of the list
| in question, generating a destructuring argument list and destructuring
| the list, then successively binding the iteration variable to each
| destructuring variable in turn.

  If you do this, or the braindamaged attempt you started with, I am not
  going to use your implementation and if I find a bug because of such a
  moronic attempt to make life as hard as possible for your users, I will
  replace your rotten `dolist´ with one that works as expected.

  Why do I think this rebarbative complaint is meretricious?  Superficially,
  adherence to the standard is a high and noble goal, but when invoked where
  it clearly has no place in intelligent implementations, and where rational
  circumventions of the supposed violation is the obvious /expansion/ of the
  /macro/ under question, it sullies the value of conformance.  Those who do
  not want to pay much attention to the standard can then point to the
  cantankerous quibblers and catamarans who engage in invention of clearly
  insane implementation techniques in their overzealous attempts to show
  that one cannot guard against excesses in human stupidity.  However, if
  Common Lisp were a language designed /by/ morons /for/ morons, we would
  also need a battery of "guarantees" from the standard that implementors
  with an IQ below that of U.S. Presidents would be forced to follow under
  threat of military action against them.  Common Lisp is a language by and
  for people with working brains.

  The standard is not some license for academic masturbators to be creative
  at the expense of the programmers with the excuse that they are conforming
  to some bogus "letter of the standard".

  The spirit of the standard is more important than the letter.  Prohibition
  against messing with the traversed list structure is obviously a good idea
  for functions where the traversal mechanism is opaque, as in `mapcar´, but
  it is nuts to claim that `dolist´ should be similarly constrained for the
  tail of the list.  (Messing with the cdr /chain/ is obviously moronic as
  there is no guarantee that, e.g., `delete´ would have only and exactly
  harmless effects, but appending to the tail?  Gimme a freaking break!)

  I refuse to consider your bogus implementations of `dolist´ as /possible/
  unless one wishes to prove a point, which means you would have to be more
  than pathologically anal-retentive to /actually/ do such a stupid thing.
  If you want languages that are created mainly to prove some irrelevant
  point, try Scheme or the functional languages.  Common Lisp is a language
  for getting the job done while being both elegant and intelligent.  Common
  Lisp should ideally be off-limits to morons.

  This was the last time I post any code to this goddamn newsgroup.  It was
  a mistake to post code to begin with.  I apologize for upsetting the anal-
  retentive so much.  Had I known I had posted to an audience of rejects for
  the leading role of "Rain Man", I would have shut up long ago.  Fuck it.

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.