Issue READER-MACRO-VALUES
Issue: READER-MACRO-VALUES

Forum: Editorial

References: CLHS 2.2

Category: CLARIFICATION/CHANGE

Edit history: 2004-06-10, Version 1 by Lars Brinkhoff

Status: For CLiki consideration

Problem Description:
2.2 step 4, says "The reader macro function may return zero values or one value". Is this a strict constraint on the number of values, or does the usual "primary value" rule apply?

Proposal (READER-MACRO-VALUES:STRICT):
Specify that the number of values returned must be 0 or 1.

Proposal (READER-MACRO-VALUES:LOOSE):
Specify that any number of values may be returned; excess values are ignored.

Test case:

Rationale:
Mostly this precludes implementations from arbitraily adopting one of the two possible interpretations.

Current practice:
CLISP implements STRICT: it throws an error if a reader macro returns more than one value.

Cost to Implementors:
Small.

Cost to Users:
None. Portable programs cannot currently rely on any particular behavior.

Cost of Non-Adoption:
Users would be confused about what to expect because implementations might implement either of the two behaviours.

Benefits:
Tighter spec.

Aesthetics:

Discussion:
  • Bruno Haible votes for STRICT. Rationale: The number of return values of a reader macro is part of a protocol. This protocol does not currently support more than one value (but it may in the future, as an extension). Therefore STRICT increases program robustness and keeps the door open for future evolution of the protocol.