ROOM-DEFAULT-ARGUMENTROOM 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 (CASE FLAG (:DEFAULT (ROOM)) ((T NIL) (ROOM FLAG))) where (ROOM FLAG) would suffice:DEFAULT is equivalent to passing no argument to ROOM.ROOM ':DEFAULT) is functionally equivalent to (ROOM).
Allows ROOM to be describable without reference to supplied-p information.
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.
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.ROOM in the now-being-written specification would be less complicated.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 default case.