char-upcase/char-downcase/char-titlecase/char-foldcase の実装

UnicodeDataata.txt をパースしマッピングの表を得る。それを alist としてデータを保存し、実行時に hashtable に入れるという実装にした。
hashtable の簡易外部表現が欲しくなる。
いろいろ見て回って、Unicode の中の人も大変だなと思う。upcase するときに1文字が2文字になったりする場合があるなんて知らなかった。
つまりプログラミング言語でそれをサポート仕様と思うと char-upcase の引数は文字で、戻り値は文字列なんてことに。

実装のテスト

(char-upcase #\i)          #\I
(char-downcase #\i)          #\i
(char-titlecase #\i)          #\I
(char-foldcase #\i)          #\i

(char-upcase #\Σ)          #\Σ
(char-downcase #\Σ)          #\σ
(char-titlecase #\Σ)          #\Σ
(char-foldcase #\Σ)          #\σ