Issue: PRINT-CASE-BEHAVIORForum: 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.