#A()

To: "common-lisp%su-ai" at usc-ecl

Subject: #A()

From: Daniel L. Weinreb <dlw at SCRC-TENEX at MIT-ML>

Date: Mon, 28 Mar 1983 17:56:00 -0000

Mail-from: ARPANET site SU-AI rcvd at 28-Mar-83 1156-PST

The syntax #A() is ambiguous; it could either mean a 1-D array with 0
elements, or a 0-D array whose (sole) element is NIL. This is because
() is both a list and a symbol.
I truly think that it would be in the best interests of everyone on the
list if each of us would manage to refrain from re-opening the dispute
as to whether the empty list and the symbol NIL should be the same or
not. We have spent considerable time going over this ground, and the
decision has been made.
The only reasonable thing I can see is to define it to be a 1-D array
with 0 elements, define it to be a 0-D array containing a NIL, or define
it to signal an error. Leaving it officially undefined can only lead to
trouble; surely it's no significant extra work to check for this case
and signal an error.
(I imagine someone will suggest making "#A()" and "#ANIL" be
distinguished, and so I'd like to express my extreme disapproval of this
idea right away. Primarily, it would be completely inconsistent with
the rest of the language definition. Secondarily, it would be very
clumsy to implement.)