Change string comparisons to normalize to NFC prior to comparing.
authorChris Hanson <org/chris-hanson/cph>
Wed, 19 Apr 2017 05:18:24 +0000 (22:18 -0700)
committerChris Hanson <org/chris-hanson/cph>
Wed, 19 Apr 2017 05:18:24 +0000 (22:18 -0700)
commitabda3dfe514ad2049aedf58213a33cc3b492d9c0
tree9227810d595cbded3477fb509f4f5f98604fb6a0
parentdd24d74a311632f0e498611eae3d70d0ed5f96f9
Change string comparisons to normalize to NFC prior to comparing.

The procedures that return index values have not been updated since it's not
obvious what to do with them.  Comparison is meaningless for non-normalized
strings, so it's necessary that all comparisons be done between normalized
strings.  This means either (a) require compared strings to be normalized before
calling the comparator, or (b) have the comparator do normalization on the
arguments.  If (b) is chosen, then the returned index value will be wrong in the
case where the arguments aren't normalized, as it will refer to the normalized
strings, not the arguments.

I'm considering choosing (b) and changing the definitions of these procedures to
return a slice into the normalized strings instead of an index.  However, the
upcoming implementation of immutable strings may make it simple for every
immutable string to be normalized, which may make (a) feasible.

For now I'm going to ignore this, which is fine as long as only ASCII strings
are compared.
src/runtime/ustring.scm