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


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.


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