I checked a few other implementations just to get opinions.
Clozure, ECL, CMU, and ABCL never output the character name under any combination of options.
i.e. for all of them you get
* (write #\space :readably t :escape t :pretty t)
#\
* (write #\space :readably t :escape t :pretty nil)
#\
and for all other permutations of T/NIL to the keywords.
CLISP: non-spec-compliant. Always outputs the name regardless of printer options.
[1]> (write #\space :readably nil :escape nil :pretty nil)
#\Space
Seems odd that we would have uniquely stumbled upon a correct solution regarding *print-readably* and/or adjustment of the default dispatch table.
Not sure if serious, but what if we could exploit some Unicode spaces to convey behavior through the printer-printer. The spec should have seen that deletion of significant whitespace is wrong
I checked a few other implementations just to get opinions.
Clozure, ECL, CMU, and ABCL never output the character name under any combination of options.
i.e. for all of them you get
* (write #\space :readably t :escape t :pretty t)
#\
* (write #\space :readably t :escape t :pretty nil)
#\
and for all other permutations of T/NIL to the keywords.
CLISP: non-spec-compliant. Always outputs the name regardless of printer options.
[1]> (write #\space :readably nil :escape nil :pretty nil)
#\Space
Seems odd that we would have uniquely stumbled upon a correct solution regarding *print-readably* and/or adjustment of the default dispatch table.
Not sure if serious, but what if we could exploit some Unicode spaces to convey behavior through the printer-printer. The spec should have seen that deletion of significant whitespace is wrong