Subject: Re: LOOP and patterns (Re: Hash to list?)
From: Erik Naggum <>
Date: 1999/12/13
Newsgroups: comp.lang.lisp
Message-ID: <>

* Frode Vatvedt Fjeld <>
| Well, I disagree with you here.  I think "(hash-table-list x)" is a lot
| more readable (and not the least bit weird) than the loop expression,
| which I find about equally readable to the "plain" lisp form.  And, more
| importantly, the time-to-convince-me-it's-correct factor is also much
| better.

  well, I would _not_ understand what a function called HASH-TABLE-LIST was
  doing without reading its documentation or source code, and that I would
  have to repeat every time I found it in a new package or project.  the
  reason is quite simple: there are so many lists that could be generated
  from hash tables that none of them merit being the only one thus named.

| I'm a bit confused: My impression after reading OnLisp and other books is
| that I'm encouraged to write and use precisely this kind of "utilities".
| Do you disagree with this?

  actually, yes.  naming utility functions is a very hard problem, and they
  should therefore not be multiplied lightly.  when there is clearly a
  diversity of needs, it is better to be a little more verbose than to
  pollute the name space with thousands of functions.  the C++ way to do
  this is to talk about patterns to discourage people from creating tons of
  one-call functions.  the Lisp way is to create sub-languages and macros
  that cover _multiple_ needs well.  I actually think LOOP succeeds in
  this, but it suffers in my view from not creating an environment with
  local macros instead of the positional "lexical keyword" stuff that I
  have come to dislike in other languages.