2005-05-03 [長年日記]
λ. GHC 6.4 ソースコードHacking: メモ
[haskell-jp:590]によるとテーマは「多言語化」らしいので、そのための個人的メモ。
HaskellのCharはUnicodeなので、同じく文字をUnicodeで扱っているJavaや.NET等のモデルが参考になるはず。
- Unicode文字列⇔マルチバイト文字列 の変換
- 選択肢:
- iconv + nl_langinfo(CODESET)
- -
- libcのmb⇔wc変換関数
- 現在の Hugs は --enable-char-encoding=locale でコンパイルするとこれを使う。wchar_tがUnicodeである環境(WindowsやLinux)では問題ないが、*BSD等はそうではないので問題となる。wchar_t がUnicodeかどうかを調べるには defined(_WIN32) || defined(__STDC_ISO_10646__) で良いと思う。
- その他のライブラリ
- the m17n library 等。libm17nはちょっと使ってみた感じでは結構良さそう。
- 自前でテーブルを持つ
- これは出来たら避けたいな
- IO周りで、Unicode⇔マルチバイト の変換
- 基本的には GHC.IO を書き換えればよい。GHC.IOBase と GHC.Handle も参照。
- FFI周りで、Unicode⇔マルチバイト の変換
- Foreign.C.Stringを書き換えればよい。参考: Hugsへのパッチ
- Text.Regex
- 参考: GHC 6.2 で Oniguruma を使うためのパッチ
- コンパイラがマルチバイトで書かれたソースファイルを処理できるように?
- IO周りを対応すれば自動的に対応できる? プリプロセッサでエスケープするようにすればコンパイラ自体に手を入れる必要はない?
- 複数のエンコーディングを同時に使うためのAPI?
- -
- the m17n library のGUI周りと Input Method 周り?
- -
- CHISE とのインターフェース?
- -
- HsLocale
- アレな部分もあるけど、パクれそうなコードがある。 HsLocale-win32.diff
λ. 第六回圏論勉強会
圏論勉強会も今回で六回目。今回はブラウワー(Brower)の不動点定理のセクションだったのだけど、このセクションは何度読んでも面白い。今回も、これまで「なんとなく」で読み飛ばしてしまっていたところを掘り下げることが出来て興味深かった。やっぱり、色々な視点があるっていいな。
それから、たけをさんがmixiにコミュニティを作ってくれました。mixi:圏論勉強会。