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

Remarks on mini-ballot

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) ...)
	(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
(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)