Subject: Re: the "loop" macro
From: Erik Naggum <>
Date: Sun, 26 Aug 2001 21:16:26 GMT
Newsgroups: comp.lang.lisp
Message-ID: <>

* John Foderaro <>
> You have an opening paren and a closing parens and then a collection of
> english words with stuff in between.  There is no longer any structure
> visible.  You have to read the form as you would a novel with very
> obscure and convoluted sentence struture.

  Yeah, ick!  That description kind of reminds me of stuff like this:

  		(if* (not (probe-file orig-dxl))
		   then (setq prev (rename-file dxl-file orig-dxl))
		 elseif (not (probe-file old-dxl))
		   then (setq prev (rename-file dxl-file old-dxl)))

> Everyone who've I've seen attracted to the loop macro starts out swearing
> that they will only use it for simple loops but soon get loop fever and
> it's a challenge to them to write the most obscure unreadable loop macros
> they can, using every single loop macro keyword.

  You have seen my code.  I do not do that.  I have seen lots of other
  people's code, and they do not do the horrible things you conjure up.
  Please do not insult people's intelligence so gravely by pretending that
  you do not know that you exaggerate wildly and irrationally and that you
  think nobody would be smart enough to arrest you for it.  They do, and it
  makes your point ridiculous and dishonest.  Coupled with the fact that
  you do use that fantastic if* monster, which suffers from even more of
  the problems you have described for loop, the intelligent reader will sit
  back and wonder what the hell you _really_ are opposed to about loop as
  none of your lofty principles apply to another obvious candidate.

> My advice: Avoid loop like the plauge.  Stick with all those parens.
> Make it your goal that your code will not only work but will be readable
> and modifyable by others.

  Excellent argumentation, and I mean that.  Pity it is not applied to if*,
  too, which is such an incredibly horrible concoction that I have a really
  hard time dealing with those who use it, and not just their code.  Unlike
  loop, which does some pretty useful things, if* is but a wrapper around
  cond to get rid of progn, making your code unreadable and unmodifiable by
  those who happen to think that this is good advice, slightly paraphrased:

> Learn Lisp first.  Give it a chance before you start in on the if* language.

  Please get rid of if* in published Franz Inc code, and I can live with
  your verbose iteration idioms and the moderately supported fear that loop
  is underoptimized for political reasons.  When you have cleaned up the
  if* act, I will probably listen to you on a lot of other issues, too, but
  as long as you rant and rave about loop while you use if*, I am sorry,
  but I cannot take you very seriously.  It looks too much like a religious
  issue that has none of the redeeming qualities of actual religions.