Hi,
I'd like to change the few places where the manual says "may be quoted, but need not be".
Rationale: don't make the user believe something is evaluated when it's not!
Despite the manual says so, (collect i at 'beginning) barfs.
Instead of changing the code to make this work, I propose to change the manual to *not* accept quoted forms. 1. These confuse the user. They fool the user into believing arbitrary forms could be used (if (foo) 'beginning 'end) and that it's a run-time choice when it's not. 2. These make implementations contain broken heuristics like (and consp (eq car 'quote))
I believe there's more value in making such forms accept various forms of symbols (like loop keywords), e.g. :end, end END etc. instead.
On a similar issue, I have criticized UFFI for containing similar heuristics instead of clear descriptions of what types are evaluated and what not (cf. uffi-users list of October 2004). Kevin Rosenberg is about to change something there.
Cost of change to users: it's a pure matter of style. Users using 'end/'beginning/'start need to use other forms, e.g. (collect foo :at :start) (collect foo at :start) (collect foo :at #:start) (collect foo #:at start) etc.
All of these can be supported cheaply (in terms of run-time) and I'm sure all users will find a form that pleases them visually.
Prior to making these changes in (my copy of) the code, I wanted to discuss the issue at first.
Regards, Jörg Höhle