[iterate-devel] iterate proposal: "maybe quote or not" is bad design: remove from manual

Hoehle, Joerg-Cyril Joerg-Cyril.Hoehle at t-systems.com
Thu Nov 11 16:59:39 UTC 2004


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




More information about the iterate-devel mailing list