[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


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")

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")

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

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

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.