Optional case insensitivity

In contrast with earlier revisions of the report [2], the syntax of data distinguishes upper and lower case in identifiers and in characters specified via their names. For example, the identifiers X and x are different, and the character #\space cannot be written #\SPACE.

Implementors may wish to support case-insensitive syntax for backward compatibility or other reasons. If they do so, they should adopt the following directives to control case folding.

#!fold-case
#!no-fold-case

These directives may appear anywhere comments may appear and are treated as comments, except that they affect the reading of subsequent lexemes. The #!fold-case causes the reader to case-fold (see library section on ““Unicode””) each <identifier> and <character name>. The #!no-fold-case directive causes the reader to return to the default, non-folding behavior.