[R6RS] write/read or read/write invariance

dyb at cs.indiana.edu dyb at cs.indiana.edu
Wed May 17 11:59:39 EDT 2006

The Unicode requirements we spelled out in Boston included "write/read"
invariance, at least according to Marc's notes and mine.  Looking back
through the archives, it seems like write/read invariance is something
stronger than Will's latest take on read/write (read-write) invariance. 
Basically, the intent seems to be that write/read invariance for symbols
requires that any symbol that can be created can be written in such a way
that it can be read back in.  Since we have not chosen to restrict the set
of symbols that can be created, we must have a syntax for all symbols (the
Unicode SRFI does that), and we must require that write employ the syntax
in such a way that all symbols printed by write can be read back in by

I propose that we separate the issue into two parts, a language
requirement and an implementation requirement, as described below.

Definition:  A machine-readable representation of a value is a printed
representation of the value that allows it to be read (via the read
procedure) as the same (in the sense of equal?) value.

Part 1. Language requirement: complete grammar

   Every symbol, string, character, and number that can be created via
   standard operators has at least one standard machine-readable

Part 2. Implementation requirement: write/read invariance

   The write procedure must use a standard machine-readable representation
   of a value if such a representation exists.


More information about the R6RS mailing list