CLHS: Issue ROOM-DEFAULT-ARGUMENT Writeup

#

## Issue ROOM-DEFAULT-ARGUMENT Writeup

    Issue:        ROOM-DEFAULT-ARGUMENT
    References:   ROOM (p442)
    Category:     ADDITION
    Edit history: 12-Sep-88, Version 1 by Pitman

    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 (ROOM-DEFAULT-ARGUMENT:NEW-VALUE):

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

    Test Case:

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

Copyright 1996-2005, LispWorks Ltd. All rights reserved.