Cleanup Issue ROOM-DEFAULT-ARGUMENT

Status
Passed, Jan 89 X3J13
Category
ADDITION
References
ROOM (p442)

Problem Description

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 (CASE FLAG (:DEFAULT (ROOM)) ((T NIL) (ROOM FLAG))) where (ROOM FLAG) would suffice

Proposal (NEW-VALUE)

Specify that passing an argument of :DEFAULT is equivalent to passing no argument to ROOM.

Test Cases

(ROOM ':DEFAULT) is functionally equivalent to (ROOM).

Rationale

Minimal change needed to get around the stated problem.

Allows ROOM to be describable without reference to supplied-p information.

Current Practice

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.

Benefits

The description of ROOM in the now-being-written specification would be less complicated.

Aesthetics

This proposal would make a minor improvement in aesthetics.

Discussion

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 default case.

Edit History