Cleanup Issue STREAM-ELEMENT-TYPE-EXAMPLES

Category
CLARIFICATION
References
STREAM-ELEMENT=TYPE (CLtL, page 332, ANSI Draft, page 6-38)

Problem Description

Below is a list of the examples and specified outputs which are used in the ANSI draft standard.

(stream-element-type *debug-io*) ---> STRING-CHAR (stream-element-type (make-concatenated-stream)) --> T (setq s (open "tempfile.temp" :element-type 'bit :if-does-not-exist :create)) --> <stream identifier> (stream-element-type s) --> (INTEGER 0 1)

The following describes the inconsistencies with the above examples. The first expression returns the value STRING-CHAR when executed on the Mac, but when executed on the Symbolics it returns the value CHARACTER (Note: STRING-CHAR is a subtype of CHARACTER).

The second expression returns the value T when executed on the Symbolics, though it returns the value STRING-CHAR when executed on the Mac, and it then returns the value NIL when executed on the VAX.

The third expression does not evaluate correctly on the Symbolics and VAX implementations where the :direction keyword default value is :input, though it does evaluate correctly on the MAC implementation where the default value for :direction is :output.

The fourth expression also returns different values. On the MAC and VAX implementations the value BIT is returned for this expression, while Symbolics returns the value (UNSIGNED-BYTE 16). The :direction :output specification had to be made to the third expression in order for the VAX and Symbolics implementations to evaluate the last expression.

Proposal

Clarify what the appropriate outputs for each of these expressions should be over all implementations.

Rationale

For validity and conformance.

Current Practice

As stated in problem description for each expression and implementation.

Adoption Cost

Benefits

Standardization and portability.

Conversion Cost

Aesthetics

Discussion

Edit History