CLHS: Issue PRINT-CASE-BEHAVIOR Writeup

#

## Issue PRINT-CASE-BEHAVIOR Writeup

    Issue:        PRINT-CASE-BEHAVIOR
    Forum:        X3J13 Letter Ballot
    References:   *PRINT-CASE* (X3J13/92-102, p22-65)
    	      *PRINT-ESCAPE* (X3J13/92-102, p22-67)
    	      Public review comment Pitman-8
    Category:     CLARIFICATION
    Edit history: 21-Jun-93, Version 1 by Steele (based on text by Loosemore)
    Status:		Proposal CLARIFY passed 11-0 on letter ballot 93-304.

    Problem Description:

      This seems to be a case of poorly integrated cleanup issues.

      We need to resolve ambiguities in the handling of *PRINT-CASE*.

      The apparent contradictions are due to text from two proposals,
      PRINT-CASE-PRINT-ESCAPE-INTERACTION:VERTICAL-BAR-RULE-NO-UPCASE and
      READ-CASE-SENSITIVITY:READTABLE-KEYWORDS, that were previously adopted
      by the committee.  Going by the order of the votes on these issues,
      READ-CASE-SENSITIVITY has priority over PRINT-CASE-PRINT-ESCAPE-INTERACTION,
      which in turn has priority over any text derived from the base document.

    Proposal (PRINT-CASE-BEHAVIOR:CLARIFY):

      (a) This sentence on page 22-65:

        Under no circumstance is
        any character that is lowercase in the internal representation ever presented
        as uppercase due to \varref{*print-case*}.

      is quoted from the PRINT-CASE-PRINT-ESCAPE-INTERACTION proposal, which
      was made obsolete by the subsequent adoption of the
      READ-CASE-SENSITIVITY issue.  We propose to remove this sentence.

      (b) The text in section 22.1.3.6.2 was derived from the
      READ-CASE-SENSITIVITY proposal (which actually says "vertical-bar
      syntax" rather than "escape syntax").  We propose to replace the phrase

        When \term{escape} syntax is not being used,

      with

        When both \varref{*print-escape*} and \varref{*print-readably*} are
        \term{false}, or the characters under consideration are not already
        quoted specifically by \term{single escape} or \term{multiple escape}
        syntax,

      This choice is consistent with the decision from the
      PRINT-CASE-PRINT-ESCAPE-INTERACTION proposal that the case in which
      symbols print is affected by *PRINT-CASE* even when *PRINT-ESCAPE* is
      false.  It is also consistent with the Guy Steele's interpretation
      in the second edition of "Common Lisp, the Language".

      (c) This text from the first paragraph of section 22.1.3.6

        (but the case in which to print any uppercase characters in the
        \term{name} is controlled by \thevariable{*print-case*}).

      was derived from the base document and was made obsolete by the adoption
      of the READ-CASE-SENSITIVITY proposal.  We propose to replace this with

        (but the case in which to print characters in the \term{name} is
        controlled by \varref{*print-case*};
        \seesection{ReadtableCasePrintEffect}).

    Test Case:

      Not provided.

    Rationale:

      We should better document the relationship between *PRINT-CASE* 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 Pitman #8.

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