This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Ticket 92: Case-folding flags

2012-10-05 06:42:20
WG1 - Core
alexshinn
major
cowan
fixed
source
closed
2010-11-15 05:28:44
defect

I propose adopting the R6RS flags #!case-fold and #!no-case-fold to specify the case-sensitivity of files of Scheme code, even though most R5RS Schemes that support flags use #ci and #cs. In Chicken, at least, the latter two refer to the next datum only, which is one argument for using the unambiguous R6RS forms.

For case-sensitivity control in files read by the program, I suggest the method of PortsCowan, which is selective per-file rather than pervasive.

What happens when a case-preserving module imports names from a case-folded module? Since Unicode case folding is downcasing, the obvious answer is that all such names are implicitly exported in lower case. Thus a case-preserving module must refer to them in lower case only, and an attempt to reference them in upper case will fail.

The reverse situation is more difficult. A case-preserving module may export foo, Foo, and FOO as three separate names; how can they be written in a case-folding module that imports them? The answer is that case-folding affects only reading and printing; small Scheme identifiers may contain both lowercase and uppercase letters, thanks to the presence of escaping mechanisms in identifier syntax. Consequently, the case-folding module can refer to these identifiers as foo (or FOO), |Foo|, and |FOO| respectively.

resolutionfixed
statusnewclosed

WG1 voted to go with R6RS.

resolutionfixed
statusclosedreopened
owneralexshinn
statusreopenedassigned
statusassigneddecided
owneralexshinn
statusdecidedwriting
resolutionfixed
statuswritingclosed