References: DO-SYMBOLS, DO-EXTERNAL-SYMBOLS, DO-ALL-SYMBOLS
Edit history: v1, 13 Feb 1991, Sandra Loosemore
It's not clear what the scope of the implicit NIL block surrounding
a DO-SYMBOLS, DO-EXTERNAL-SYMBOLS, or DO-ALL-SYMBOLS form is. Does
it include only the body forms or the entire form?
Clarify that the implicit NIL block effectively surrounds the entire
DO-SYMBOLS, DO-EXTERNAL-SYMBOLS, or DO-ALL-SYMBOLS form.
This is consistent with DO, DO*, DOLIST, and DOTIMES.
(do-symbols (s (or (find-package "FROB") (return nil)))
=> always returns T since BLOCK referred to by the RETURN is the
implicit BLOCK established by DO-SYMBOLS, not the explicit outer
Lucid version 4.0 implements this proposal.
Allegro version 3.1 implements DO-EXTERNAL-SYMBOLS and DO-ALL-SYMBOLS
according to this proposal, but not DO-SYMBOLS.
Chestnut's Lisp-to-C translator implements this proposal.
Cost to Implementors:
Cost to Users:
Cost of non-adoption:
Implementations will differ and the language specification will be vague,
without any good reason.
The cost of non-adoption is avoided.
Making the language consistent is a good thing.