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.
CamomileOCaml用Unicodeライブラリ                 山形賴之           2011年12月29日                    京大
AgendaUnicodeとは?OCamlとは? Camomile
AgendaUnicodeとは?OCamlとは? Camomile
A   U+0041   Ậ   U+1EAC                 = U+0041 + U+0302                 + U+0323    U+3042あ            既   U+65E2ᚠ   U+1...
文字集合は民族の財産だ!    勝手に統合するな!Code Set Independeceにこだわる
Character, not glyphAAAAA ←すべて同じ文字原則:文字という論理的な対象をコード論理的とは?  ≒意味  でも、既≠旣とかわかりにくい
意味                 士≠土                         抽象的な構造                   既≠旣とめ、はね、など    具体的な形
BMP:よく使われる文字0 10000 20000 30000               E0000 F0000    10FFFF            拡            張                             ...
A Ω 語                ������41 CE A9 E8 AA 9E F0 A0 80 94 A Ω 語 ������0041 03A9 8A9E D840 DC14   A         Ω        語      ...
Ậ=Ậ  1EAC = A + ̂+ ̣  0041   0302   0323 = A + ̣+ ̂  0041   0323   0302
NFD:できるだけ分解    NFD(Â+ ̣)=A + ̣+ ̂NFC:できるだけ合成    NFC(A + ̂+ ̣)= ẬNFKD,NFKC:    NFKD(カ)= カ    NFKD(Dž)= D + z + ̆
Unicode Algorithm• Unicode collation algorithm (UCA)• Case mapping algorithm• Bidirectional algorithm (BIDI)
AgendaUnicodeとは?OCamlとは? Camomile
Lisp,Scheme,Erlang       ML系言語        OCaml        Haskell         F#         Scala
OCaml vs Haskell• 関数型言語  – 副作用のないプログラミングスタイルを奨励• Hindley-Milner type systemがベース  – 強い静的型付け  – 型推論  – 多相型
OCaml vs Haskell(続き)      OCaml             HaskellEager              Lazy副作用あり              モナドbegin … end etc.   オフサイドルー...
AgendaUnicodeとは?OCamlとは? Camomile
Camomile•   基本データ型•   文字コード変換•   正規化•   Unicode Algorithms    – UCA (文字列照合)    – Case mappings• 正規表現
サイト• Github / yoriyuki / Camomile• 課題  – ulib  – Unicode 6.X対応  – まともな正規表現エンジン  – バグ、バグ、バグ…
Upcoming SlideShare
Loading in …5
×

Camomile - OCaml用Unicodeライブラリ

1,479 views

Published on

  • Be the first to comment

  • Be the first to like this

Camomile - OCaml用Unicodeライブラリ

  1. 1. CamomileOCaml用Unicodeライブラリ 山形賴之 2011年12月29日 京大
  2. 2. AgendaUnicodeとは?OCamlとは? Camomile
  3. 3. AgendaUnicodeとは?OCamlとは? Camomile
  4. 4. A U+0041 Ậ U+1EAC = U+0041 + U+0302 + U+0323 U+3042あ 既 U+65E2ᚠ U+16A0 旣 U+65E3
  5. 5. 文字集合は民族の財産だ! 勝手に統合するな!Code Set Independeceにこだわる
  6. 6. Character, not glyphAAAAA ←すべて同じ文字原則:文字という論理的な対象をコード論理的とは? ≒意味 でも、既≠旣とかわかりにくい
  7. 7. 意味 士≠土 抽象的な構造 既≠旣とめ、はね、など 具体的な形
  8. 8. BMP:よく使われる文字0 10000 20000 30000 E0000 F0000 10FFFF 拡 張 Private 漢 Zone 字 タグ Plane 1: 特殊記号、歴史的な文字
  9. 9. A Ω 語 ������41 CE A9 E8 AA 9E F0 A0 80 94 A Ω 語 ������0041 03A9 8A9E D840 DC14 A Ω 語 ������00000041 000003A9 0000819E 00020014
  10. 10. Ậ=Ậ 1EAC = A + ̂+ ̣ 0041 0302 0323 = A + ̣+ ̂ 0041 0323 0302
  11. 11. NFD:できるだけ分解 NFD(Â+ ̣)=A + ̣+ ̂NFC:できるだけ合成 NFC(A + ̂+ ̣)= ẬNFKD,NFKC: NFKD(カ)= カ NFKD(Dž)= D + z + ̆
  12. 12. Unicode Algorithm• Unicode collation algorithm (UCA)• Case mapping algorithm• Bidirectional algorithm (BIDI)
  13. 13. AgendaUnicodeとは?OCamlとは? Camomile
  14. 14. Lisp,Scheme,Erlang ML系言語 OCaml Haskell F# Scala
  15. 15. OCaml vs Haskell• 関数型言語 – 副作用のないプログラミングスタイルを奨励• Hindley-Milner type systemがベース – 強い静的型付け – 型推論 – 多相型
  16. 16. OCaml vs Haskell(続き) OCaml HaskellEager Lazy副作用あり モナドbegin … end etc. オフサイドルール独自機能 独自機能 モジュール タイプクラス オブジェクト指向
  17. 17. AgendaUnicodeとは?OCamlとは? Camomile
  18. 18. Camomile• 基本データ型• 文字コード変換• 正規化• Unicode Algorithms – UCA (文字列照合) – Case mappings• 正規表現
  19. 19. サイト• Github / yoriyuki / Camomile• 課題 – ulib – Unicode 6.X対応 – まともな正規表現エンジン – バグ、バグ、バグ…

×