Subject: Re: the "loop" macro From: Erik Naggum <erik@naggum.net> Date: Sun, 26 Aug 2001 21:16:26 GMT Newsgroups: comp.lang.lisp Message-ID: <3207849386128032@naggum.net> * John Foderaro <jkf@unspamx.franz.com> > 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. ///