[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Results of ballot A

Results of Ballot A:

Evaluated by the same non-linear criteria as the last ballot, for the
same non-linear reasons.

There will be one last ballot, probably appearing later today.  This
will contain some proposals on recursive reading, file names, and a few
odds and ends.  That will probably be the last formal ballot before the
manual goes to press.  There will be a period of proofreading, however.

A1. Add PARSE-INTEGER to replace the defunct PARSE-NUMBER: ACCEPTED.  I
take it that BSG's clarification to this is acceptable: this function
does not parse the full Common Lisp integer syntax (including such
things as #R) but just slurps down digits in the radix provided by the
caller and returns an integer.
A2. PROCLAIM evaluates its arguments: ACCEPTED.
A3. Package name syntax: most people could accept either B or C, with a
marked preference for B among most of those indicating a preference.  I
will take B as accepted and see what I can do to the "string-based"
interface functions that worry Moon.  At the very least, we can make
these string-or-symbol and encourage users to use the symbol form so
that they won't get confused about case.
A4. Rearange args to VECTOR-PUSH and VECTOR-PUSH-EXTEND to match PUSH:
A5. Add NTH-VALUE: REJECTED.  The raw vote is almost exactly tied, but
the negatives are more vehement, the implementors are predominately
against, and the conservative principle that says in case of a tie we go
with the status quo.
A6. Add a set of primitives for named structures: REJECTED.
Implementors of DEFSTRUCT and similar packages will be encouraged to
confine any implementation-specific code for dealing with named
structures in a small, easily changed part of the package.
A8. Make (APPLY '(LAMBDA ...)) be an error: REJECTED.  The debate over
how far in the direction of Scheme we want to go will undoubtedly
continue, and we may go farther in the second edition, but a complete
restructuring of the traditional role of lambda and function names was
generally viewed as unwise at this time.  Users should be encouraged to
use #'(LAMBDA ...) wherever appropriate.  Guy should be encouraged to
clarify the definitions of "function", "compiled function", and how all
this relates to lexical closures in the manual.  Certain things are
inconsistent at present.
A9. Reinstate VREF: REJECTED, narrowly.
A10. Add integer seed to MAKE-RANDOM-STATE: In my opinion, Guy has
single-handedly shot this down by showing that the desired functionality
can be obtained through the existing mechansims, and that the proposed
new mechanism cannot do this as well.  Unless someone can show that this
is wrong, I'm going to treat this proposal as REJECTED.
A11. Add APPLYHOOK mechanism: APPROVED.  (Sigh, now I have to go
implement this thing -- still, it's probably worth the hassle.)
A12. Add DLET: REJECTED.  People favoring some form of this slightly
outnumbered those who opposed it, but there was no agreement among those
in favor on the exact form that this macro should take.  So the
competing plans will have to fight it out as yellow pages packages for
now, and maybe by the second edition we'll have a clear winner.
A13. Moon's proposed change to INTERN and FIND-SYMBOL: APPROVED.
people have proposed that we rename these things to "MV-".  This was
debated long ago, the "MULTIPLE-VALUE-" prefix won out over "MV-", and I
take the matter as closed.  Moon suggests that if we call this form
"MULTIPLE-VALUE-SETQ" we must make it take pairs of arguments.  I don't
find this compelling, but I'll put this question on the last ballot.
A15. Add constants indicating values of various limits (maximum array
rank, etc.) in each implementation: APPROVED.  Leave the values of these
limits completely up to the implementation, with no minima: REJECTED.
People felt that some sort of floor is required so that users could be
sure that normal cases (a 3-D array with indices of 1024 on each
dimension, for example) will be portable.

I sense a willingness to let Guy choose a reasonable set of floor
values, in consultation with the various implementors.  The guiding
principle should be that the limits are generous enough that reasonable
human-written code will not push the limits, but not so generous that
the ability to write a Common Lisp for a small machine is NEEDLESSLY
impaired.  A starting point might be proposal of 7 array dimensions, 50
named arguments (with no limit on rest args), and 7 return values.

Implementations will be encouraged to make their own limits as generous
as possible, so that even unreasonable machine-written code can be
handled if this does not impact performance in a negative way.
A16. Flush MACRO, add Guy's SET-MACRO: basically APPROVED.  Several
people suggested that SET-MACRO is a bad name, and proposed instead a
MACRO-FUNCTION accessor upon which SETF works.  If nobody objects
strongly to this, I will take this modification as being approved.
A17. Gaussian integers are to be stored in canonical form: APPROVED.
Only a few people felt themselves to be qualified to vote on this,
but these people strongly favored the proposal.