CLHS: Issue PRINT-READABLY-BEHAVIOR Writeup

#

## Issue PRINT-READABLY-BEHAVIOR Writeup

    Issue:        PRINT-READABLY-BEHAVIOR
    Forum:        X3J13 Letter Ballot
    References:   *PRINT-READABLY* (X3J13/92-102, p22-74)
    	      Public review comment Loosemore-24
    Category:     CLARIFICATION
    Edit history: 21-Jun-93, Version 1 by Steele (based on text by Loosemore)
    Status:		Proposal CLARIFY passed (9+2)-0 on letter ballot 93-304.

    Problem Description:

      In E-mail amongst the public review committee, we had agreed that this
      was another case of a previous cleanup vote that had not been adequately
      integrated with the rest of the document.  Supposedly, there are no
      technical changes being recommended here.

      The proposal DATA-IO:ADD-SUPPORT that was the basis for adding
      *PRINT-READABLY* to the language is clear on this issue.  However,
      the document as it now stands does not accurately reflect
      the proposal, or contain adequate cross-references.

    Proposal (PRINT-READABLY-BEHAVIOR:CLARIFY):

      Make the following changes to the dpANS:

      (1) Remove this inaccurate statement from the "Notes" section for
      *PRINT-READABLY*:

        The printing of interned \term{symbols}, of \term{strings},
        and of \term{bit vectors} is not affected by \varref{*print-readably*}.

      (2) In the "Description" section for *PRINT-READABLY*, add after the
      first paragraph:

        Specifically, if \varref{*print-readably*} is \term{true}, printing
        proceeds as if \varref{*print-escape*}, \varref{*print-array*}, and
        \varref{*print-gensym*} were also \term{true}, and as if
        \varref{*print-length*}, \varref{*print-level*}, and
        \varref{*print-lines*} were \term{false}.

      (3) In section 22.1.3, change numerous references to *PRINT-ESCAPE*
      to include both *PRINT-ESCAPE* and *PRINT-READABLY*.

      (4) Rewrite section 22.1.3.10 as follows.  Prefix the first paragraph
      with:

        If \varref{*print-array*} is \term{true} and \varref{*print-readably*}
        is \term{false}, any \term{vector} ....

      Change the beginning of the next-to-last paragraph to:

        If both \varref{*print-array*} and \varref{*print-readably*} are
        \term{false}, the \term{vector} is not printed ...

      Add a new paragraph before the last paragraph:

        If \varref{*print-readably*} is true, the \term{vector} prints in an
        \term{implementation-defined} manner.  See \varref{*print-readably*}.

      (5) Rewrite section 22.1.3.11 as follows.  Prefix the first paragraph
      with:

        If \varref{*print-array*} is \term{true} and \varref{*print-readably*}
        is \term{false}, any \term{array} ...

      Change the beginning of the next-to-last paragraph to:

        If both \varref{*print-array*} and \varref{*print-readably*} are
        \term{false}, the \term{array} is printed ...

      Add a new paragraph before the last paragraph:

        If \varref{*print-readably*} is true, the \term{array} prints in an
        \term{implementation-defined} manner.  See \varref{*print-readably*}.

    Test Case:

      Not provided.

    Rationale:

      We should better document the relationship between *PRINT-READABLY* and
      other printer control variables such as *PRINT-ESCAPE*.

    Current Practice:

      Not provided.

    Cost to Implementors:

      Probably relatively small.

    Cost to Users:

      None.  This change doesn't affect anything already guaranteed to the user.

    Cost of Non-Adoption:

      Vagueness in the language specification.

    Benefits:

      Better program portability.

    Editorial Impact:

      Small.  A few small, localized edits.

    Aesthetics:

      Mostly neutral.

    Discussion:

      This addresses comment Loosemore #24.

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