Ah, for a sidenote, it struck me this library extremely easily can be wrapped into a "SRFI 75: Unicode" implementation almost only through procedure renaming.

For SRFI 75: Unicode, see: http://srfi.schemers.org/srfi-75/srfi-75.html

So, this is just to mention that all the functionality of SRFI 75 is already implemented within the combo of Gambit + this Unicode lib.

If anyone would see a reason for bringing this functionality into the exact naming used in SRFI 75 and releasing this under the name of a "srfi75" wrapper library (spontaneously I didn't quite see any reason for this til now, except for perhaps cross-Scheme-system-compatibility reasons), you're free to mention this here and/or implement it.

Brgds,
M


Basically Gambit already implements 80% of SRFI 75 by it using Unicode fully internally and in all of its char and string representaitons, the only remaining things being case-insensitive comparison and upcasing/downcasing operations i.e.

string-ci=? string-ci<? string-ci>? string-ci<=? string-ci>=?
char-ci<? char-ci=? char-ci=?
char-upper-case? char-lower-case? char-title-case? char-title-case?

char-upcase char-downcase char-titlecase char-foldcase
string-upcase string-downcase string-foldcase string-titlecase

These, Gambit essentially implements but regarding the US charset only. This Unicode library implements them for the entire Unicode standard but under different function names. (I believe the functionality is implemented exactly according to the SRFI 75 spec, though this would need to be double-checked and if anything needs to be adjusted to match, it ought to be completely minor.)

Perhaps there could be a benefit of having the Gambit-provided ANSI-only correspondents of the abovementioned procedures left referred to under some name though. Perhaps even the original name, and thus having the unicode ones under separate names, as it is with this Unicode lib already.


2012/5/21 Mikael <mikael.rcv@gmail.com>
Hi guys,

A Unicode library for Gambit has been released.

Many thanks to Florian Loitsch for releasing the Unicode library for Bigloo, of which this library in many respects is a port.

The Unicode library for Gambit does the following Unicode handling:

     unicode-char-upper unicode-char-lower
     unicode-string-upper unicode-string-upper! ; "aBc" => "ABC"
     unicode-string-lower unicode-string-lower! ; "aBc" => "abc"
     unicode-string-capitalize-strict! unicode-string-capitalize-strict ; "aBc" => "Abc"
     string-unicode-ci<? string-unicode-ci<=? string-unicode-ci=? string-unicode-ci>? string-unicode-ci>=?

It runs out of the box on vanilla Gambit and on Black Hole.

License is New BSD.

It's both released on the Dumping grounds http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Dumping_Grounds and on GitHub at https://github.com/m-i-k-a-e-l/gambit-unicode .

For some more info, please see the copy of the library headers below.

Kind regards,
Mikael

 - 

Gambit Unicode library 1.0
New BSD license

Enables Gambit Scheme with Unicode handling features.
Runs out of the box on vanilla Gambit and on Black Hole.

The Gambit-specific code and distribution:
Copyright (C) 2010-2012 Mikael More

The unicode-data.scm generator and Bigloo unicode library this library was inspired by,
found in the bigloo-unicode directory:
Copyright (C) 2007-2012 Florian Loitsch

The source data for the unicode-data.scm generator, found in the bigloo-unicode/data directory:
Copyright (C) 1991-2011 Unicode, Inc.

## Exports
unicode-char-upper
unicode-char-lower
unicode-string-upper unicode-string-upper! ; "aBc" => "ABC"
unicode-string-lower unicode-string-lower! ; "aBc" => "abc"
unicode-string-capitalize-strict! ; "aBc" => "Abc"
unicode-string-capitalize-strict  ;
string-unicode-ci<?
string-unicode-ci<=?
string-unicode-ci=?
string-unicode-ci>?
string-unicode-ci>=?

## Relation with Bigloo Unicode library. Intended scope of use of this library.
This library is based on the Unicode library for Bigloo Scheme by Florian Loitsch, as bundled
with the js2scheme distribution as found on http://code.google.com/p/js2scheme/source/browse/ .
     A copy of this library is provided in this distribution in the bigloo-unicode directory,
to enable you to easily generate Unicode constants based on any new Unicode Character Database
versions.
     The vesion of the Bigloo Unicode library bundled here is was pulled from the abovementioned
repo the 13:t of May 2012. Florian's last changes were the 12:th of March 2011. Florian's code is
to be viewed as stable since at least 2010, to the best of my knowledge the only changes since
then have been minor restructurings.

Please note that the scope of this library and the Bigloo unicode library are different, in that
Gambit has complete native Unicode character handling and charset encoding/decoding features
built-in and thus none of this needs to be provided in a separate library, whereas the
Bigloo Unicode library provides such functionality to Bigloo.

## Distribution overview
unicode.scm           - The Gambit Unicode handling library
unicode-data.scm      - The constants required to make unicode.scm spin.
                        Generated out of the Unicode Character Database.
bigloo-unicode/*      - Florian Loitsch's unicode-data.scm generator, and Bigloo Unicode library
                        that was used as inspiration for making this library.
                        Use this to generate a new unicode-data.scm out of a Unicode Character
                        Database update, if that would ever be released and relevant.
                        Latest version as of the 13:th of May 2012, see more above.
bigloo-unicode/data/* - The required files of the Unicode Character Database, see below.

## How to update unicode-data.scm with a new version of the Unicode Character Database
In case by any reason this would ever be relevant, here is how to proceed:

Update the bigloo-unicode/data/ files (namely SpecialCasing.txt and UnicodeData.txt) with
the new Unicode Character Database files.

As of the date of writing, these are released on
http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt and
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt ,
and you can see the release date of the latest update of them on
http://www.unicode.org/Public/UNIDATA/ .