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