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