[LISPWORKS][Common Lisp HyperSpec (TM)] [Previous][Up][Next]


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.


[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996-2005, LispWorks Ltd. All rights reserved.