References: ROOM (p442)
Edit history: 12-Sep-88, Version 1 by Pitman
Passing no argument to ROOM is not equivalent to any argument which
can be passed. This makes data-flow from another function which wants
to call ROOM inconvenient. Rather than simply passing a value through,
the correct calling sequence must be selected as well. For example,
one might have to do something like
((T NIL) (ROOM FLAG)))
where (ROOM FLAG) would suffice
Specify that passing an argument of :DEFAULT is equivalent to passing
no argument to ROOM.
(ROOM ':DEFAULT) is functionally equivalent to (ROOM).
Minimal change needed to get around the stated problem.
Allows ROOM to be describable without reference to supplied-p
Symbolics Genera defines ROOM using &REST and looks for NIL, (T), or (NIL).
[This reduces its ability to do compile-time number-of-argument checking.]
Some other implementations probably have a magic undocumented value
to avoid use of a SUPPLIED-P argument.
Cost to Implementors:
Probably it involves negligible resources to change this.
In most implementations, the resulting code would probably look better.
Cost to Users:
None. This change is upward compatible.
Cost of Non-Adoption:
The description of ROOM will look yucky in the emerging specification.
The source code for ROOM will look yucky.
[How's that for objective? -kmp]
Error checking in some implementations may be sub-optimal.
The description of ROOM in the now-being-written specification would
be less complicated.
This proposal would make a minor improvement in aesthetics.
This is obviously a low-priority issue, but would require such little
resources to fix that it seems worth doing.
Pitman supports this addition.
It's perhaps too bad that keywords like :SHORT, :MEDIUM, and :LONG
weren't chosen instead of T and NIL, since T and NIL have a bit of a
binary feel to them and it's hard to think of a good name for the