CLHS: Issue SYMBOL-PRINT-ESCAPE-BEHAVIOR Writeup

#

## Issue SYMBOL-PRINT-ESCAPE-BEHAVIOR Writeup

    Issue:        SYMBOL-PRINT-ESCAPE-BEHAVIOR
    Forum:        X3J13 Letter Ballot
    References:   *PRINT-ESCAPE* (X3J13/92-102, p22-4)
    	      Public review comment Moon-1
    	      Public review comment Loosemore-17
    	      Public review comment Pitman-9
    Category:     CLARIFICATION
    Edit history: 21-Jun-93, Version 1 by Steele (based on text by Loosemore)
    Status:		Proposal CLARIFY passed 10-1 on letter ballot 93-304.

    Problem Description:

      The description of how symbols are printed when *PRINT-ESCAPE* is
      true is too vague.  Three PR commentors remarked on this.

    Proposal (SYMBOL-PRINT-ESCAPE-BEHAVIOR:CLARIFY):

      Replace the text:

        \term{Backslashes} and \term{vertical-bars} are included as required.
        The \term{current output base} at the time of printing might be relevant.
        For example, if \thevalueof{*print-base*} were \f{16}
        when printing the symbol \f{face}, it would have to be printed as
        \f{\\FACE} or \f{\\Face} or \f{|FACE|},
        because the token \f{face} would be read as a hexadecimal
        number (decimal value 64206) if \thevalueof{*read-base*} were \f{16}.

      with:

        When printing a \term{symbol}, the printer inserts enough
        \term{single escape} and/or \term{multiple escape}
        characters (\term{backslashes} and/or \term{vertical-bars}) so that if
        \funref{read} were called with the same \varref{*readtable*} and
        with \varref{*read-base*} bound to the \term{current output base}, it
        would return the same \term{symbol} (if it is not
        \term{apparently uninterned}) or an \term{uninterned} \term{symbol}
        with the same \term{print name} (otherwise).

        For example, if \thevalueof{*print-base*} were \f{16}
        when printing the symbol \f{face}, it would have to be printed as
        \f{\\FACE} or \f{\\Face} or \f{|FACE|},
        because the token \f{face} would be read as a hexadecimal
        number (decimal value 64206) if \thevalueof{*read-base*} were \f{16}.

        See \varref{*print-readably*} for additional restrictions concerning
        characters with  nonstandard \term{syntax types} in the
        \term{current readtable}.

    Test Case:

      Not provided.

    Rationale:

      Explain more fully what is meant by "as required".

    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 small, localized edit.

    Aesthetics:

      Mostly neutral.

    Discussion:

      This addresses comments Moon #1, Loosemore #17, and Pitman #9.

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