[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
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