[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Remarks on mini-ballot
- To: common-lisp at SU-AI
- Subject: Remarks on mini-ballot
- From: Guy.Steele at CMU-10A
- Date: Tue, 09 Nov 1982 06:45:00 -0000
So far, the vote looks like it favors Lisp-Machine-style function specs
if any, and no asterisks around names of constants.
If it will set anyone's mind at rest about constants, the compiler can
detect accidental attempts to bind a constant locally and warn you, but
obviously can't do that for variables that are meant to be bound. Thus,
from a robustness point of view, it is important to flag variables
visually, but less so to flag constants.
As for runction specs, I find persuasive the remark that if
(DEFUN (GET FOO BAR) ...) => (SETF (GET FOO BAR) ...)
then
(DEFUN FOO ...) => (SETF FOO ...)
but the latter isn't right. I formerly favored SETF-style function
specs, but now see how wrong-headed I was.
However, the analogy above also indicates to me that function specs
like (:PROPERTY FOO BAR) really are a kind of generalized name for
a function. If so, orthogonality demands that they be permissible
in a lot of places where currently I believe they are not in Lisp Machine
LISP:
(a) In FUNCTION: #'(:PROPERTY FOO BAR) ought to be legal.
(b) As an argument to APPLY: (APPLY '(:PROPERTY FOO BAR) args).
(c) In ordinary function calls! ((:PROPERTY FOO BAR) 5 7 :START 3 :END 5)
--Guy