From: Matthew Flatt <mflatt@cs.utah.edu>
To: plt-scheme@fast.cs.utah.edu
Date: Tue, 5 Mar 2002 19:10:13 -0700 (MST)
Subject: 200alpha13

The exp-tagged code in the CVS repository for MzScheme and MrEd is now
version 200alpha13.

The main change in this version is the addition of a `current-locale’
parameter, which mainly affects string and character comparisions.

The default locale is the machine’s default (indicated by ""). As a
result, on my Windows/Linux machine:

 > (string<? "a" "B")
 #t

which is more natural than the all-uppercase-before-lowercase
convention that falls out of ASCII. And even with an English locale:

 > (string<? "caract�res" "caractfres")
 #t

Locale sensitivity is disabled by setting `current-locale’ to #f:

 > (current-locale #f)
 > (string<? "a" "B")
 #f
 > (string<? "caract�res" "caractfres")
 #f

In addition to letter order, char-upcase/downcase, alphabetic tests,
and printability tests (used when printing a string with `write’) are
all affected by the locale. Regexp ranges are not affected (though, in
the future, we may supply a `regexp/locale’ procedure where character
ranges are based on the locale instead of `char->integer’).

To avoid incompatibilies due to different downcasing of symbols in
different locales, module-loading disables locales.

This is a subtle change, and there’s plenty of room for new bugs due to
shifting character comparisions. But I’ve been using DrScheme with
locale-sensitiviy enabled for a couple of weeks, and it seems to be an
improvement. As always, feedback on this change is encouraged.

Matthew