Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
OCamlとUnicode 
Camomile開発の話 
山形賴之 
函数型なんたらの集い 2014年10月25日
OCamlとUnicode 
• フレームワークはいくつかあり 
• ocaml-text 
• ucslib 
• Daniel Bünzliの一連のライブラリ
Camomile 
• 一番古くて機能が豊富 
• Unicode 3.2対応のまま 
• 開発は終了
ucorelib family 
• Camomileの後継ライブラリ 
• Camomileの反省に基づく 
• 単純なインターフェース 
• 設定不要 
• なんかML Workshop 2011でも似たような話を…
Camomile
機能 
• データ構造 
• 文字列型(複数)、文字集合など 
• 文字コード変換 
• 大文字小文字の変換 
• 文字列照合 
• 正規表現…
caseMap.mli
test-caseMap.ml
内部データ構造 
• ‘a Tbl31.tが最も重要 
• 高速な読み出し 
• 生成は遅い 
• 更新は不可
Camomileの問題点(1) 
• Functorを多用 
• とっつきにくい 
• まあFunctorが分からなくてOCaml使う意味があるのかという気もするが
Camomileの問題点(2) 
• データファイルを動的にロード 
• データファイルのパスを設定する必要性あり 
• ロードできないとプログラム全体が落ちる 
• バイナリ配布の時忘れがち
ucorelib family
方針 
• 単純 
• 文字列型は一つだけ 
• 設定不要 
• データファイルは静的にリンクする 
• 安全 
• 純粋関数的 
• 文字、文字列型は抽象型
ucorelib 
• Unicode文字型 ー UChar 
• Unicodeテキスト型 ー Text 
• 実体はRope 
• 文字コード ー CharEncoding 
• UTF-8、UTF-16、UTF-32をサポート 
• 追加...
ucorelib family 
uproplib UCDへのアクセスv0.0.1 
ualglib Unicode Algorithmsの実装レポジトリだけ 
uenclib 文字コード変換ー 
ucollib 文字列照合ー 
uregexl...
言語拡張 
• これ以上OCamlの文法を汚したくない 
• “…“をUnicode文字列とする 
• ソースコードはUTF-8決め打ち
• 全部できるのは2030年代後半? 
• 手伝って下さる方募集しています 
• OPAMパッケージ化 
• XML 
• もちろんUnicodeや文字コードに詳しい方歓迎
Upcoming SlideShare
Loading in …5
×

OCamlとUnicode

1,290 views

Published on

Camomileとucorelibの話

Published in: Software
  • Be the first to comment

OCamlとUnicode

  1. 1. OCamlとUnicode Camomile開発の話 山形賴之 函数型なんたらの集い 2014年10月25日
  2. 2. OCamlとUnicode • フレームワークはいくつかあり • ocaml-text • ucslib • Daniel Bünzliの一連のライブラリ
  3. 3. Camomile • 一番古くて機能が豊富 • Unicode 3.2対応のまま • 開発は終了
  4. 4. ucorelib family • Camomileの後継ライブラリ • Camomileの反省に基づく • 単純なインターフェース • 設定不要 • なんかML Workshop 2011でも似たような話を…
  5. 5. Camomile
  6. 6. 機能 • データ構造 • 文字列型(複数)、文字集合など • 文字コード変換 • 大文字小文字の変換 • 文字列照合 • 正規表現…
  7. 7. caseMap.mli
  8. 8. test-caseMap.ml
  9. 9. 内部データ構造 • ‘a Tbl31.tが最も重要 • 高速な読み出し • 生成は遅い • 更新は不可
  10. 10. Camomileの問題点(1) • Functorを多用 • とっつきにくい • まあFunctorが分からなくてOCaml使う意味があるのかという気もするが
  11. 11. Camomileの問題点(2) • データファイルを動的にロード • データファイルのパスを設定する必要性あり • ロードできないとプログラム全体が落ちる • バイナリ配布の時忘れがち
  12. 12. ucorelib family
  13. 13. 方針 • 単純 • 文字列型は一つだけ • 設定不要 • データファイルは静的にリンクする • 安全 • 純粋関数的 • 文字、文字列型は抽象型
  14. 14. ucorelib • Unicode文字型 ー UChar • Unicodeテキスト型 ー Text • 実体はRope • 文字コード ー CharEncoding • UTF-8、UTF-16、UTF-32をサポート • 追加可能 • その他にUSet、UCharTblなど
  15. 15. ucorelib family uproplib UCDへのアクセスv0.0.1 ualglib Unicode Algorithmsの実装レポジトリだけ uenclib 文字コード変換ー ucollib 文字列照合ー uregexlib 正規表現ー
  16. 16. 言語拡張 • これ以上OCamlの文法を汚したくない • “…“をUnicode文字列とする • ソースコードはUTF-8決め打ち
  17. 17. • 全部できるのは2030年代後半? • 手伝って下さる方募集しています • OPAMパッケージ化 • XML • もちろんUnicodeや文字コードに詳しい方歓迎

×