PythonistaがOCamlを実用する方法     2012年11月24日  第2回 関数型言語勉強会 大阪
お前、誰よn   おのうえ(@_likr)n   関西大学の大学院生n   kyoto.py実務の人(?)、関西GPGPU勉強会主宰n   最適化アルゴリズムの研究とかやってるn   最適化ソルバーをPython / OCamlで作っ...
おのうえが関数型言語に求めたことn   高い記述性n   開発効率n   (実行速度が必要な)アルゴリズムの実装                      ここを置き換える何か     Python   Python / C API   C
OCamln   関数型言語の高い記述性n   C言語並の実行速度n   副作用に寛容
最初のソリューション  n   Python-C、C-OCaml間の橋渡しをCで実装  n   問題点       n   Cの層を実装するのが面倒                             動的リンクライブラリPython...
ctypesによる改良n   Pythonで外部関数を扱う標準ライブラリctypesを使用n   OCamlとのインターフェースをpure Pythonで実装n   Python3系やPyPyでも動く                   ...
otypesn   OCamlへのアクセスに必要なPythonコードをまとめた     n   ライブラリのロード     n   OCamlの値との相互変換     n   OCaml関数の呼び出しn   https://bitbu...
サンプル(OCaml側) (* example.ml *) let x = 5;; let f x = x * 2;; let () =   Callback.register "x" x;   Callback.register "f" f;;
サンプル(コンパイル)$ ocamlopt -c example.ml$ ocamlopt -output-obj -o example.so example.cmx
サンプル(Python側)from otypes.bootstrap import makemake(example.so, example_module)import example_modulex = example_module.caml...
まとめn   アプリケーション、UIはLL等で     実装したいという要求は多いはずn   他言語インターフェース(FFI)は     関数型言語「実用」の   になる(かも)
ご清聴ありがとうございました
PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法
Upcoming SlideShare
Loading in …5
×

PythonistaがOCamlを実用する方法

2,672
-1

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,672
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
5
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

PythonistaがOCamlを実用する方法

  1. 1. PythonistaがOCamlを実用する方法 2012年11月24日 第2回 関数型言語勉強会 大阪
  2. 2. お前、誰よn おのうえ(@_likr)n 関西大学の大学院生n kyoto.py実務の人(?)、関西GPGPU勉強会主宰n 最適化アルゴリズムの研究とかやってるn 最適化ソルバーをPython / OCamlで作った話をする
  3. 3. おのうえが関数型言語に求めたことn 高い記述性n 開発効率n (実行速度が必要な)アルゴリズムの実装 ここを置き換える何か Python Python / C API C
  4. 4. OCamln 関数型言語の高い記述性n C言語並の実行速度n 副作用に寛容
  5. 5. 最初のソリューション n Python-C、C-OCaml間の橋渡しをCで実装 n 問題点 n Cの層を実装するのが面倒 動的リンクライブラリPython Python / C API C OCaml C Interface OCaml
  6. 6. ctypesによる改良n Pythonで外部関数を扱う標準ライブラリctypesを使用n OCamlとのインターフェースをpure Pythonで実装n Python3系やPyPyでも動く 動的リンクライブラリ Python ctypes OCaml
  7. 7. otypesn OCamlへのアクセスに必要なPythonコードをまとめた n ライブラリのロード n OCamlの値との相互変換 n OCaml関数の呼び出しn https://bitbucket.org/likr/otypes
  8. 8. サンプル(OCaml側) (* example.ml *) let x = 5;; let f x = x * 2;; let () = Callback.register "x" x; Callback.register "f" f;;
  9. 9. サンプル(コンパイル)$ ocamlopt -c example.ml$ ocamlopt -output-obj -o example.so example.cmx
  10. 10. サンプル(Python側)from otypes.bootstrap import makemake(example.so, example_module)import example_modulex = example_module.caml_named_value(x)print example_module.int_val(x)f = example_module.caml_named_value(f)y = example_module.val_int(10)z = example_module.caml_callback(f, y)print example_module.int_val(z)
  11. 11. まとめn アプリケーション、UIはLL等で 実装したいという要求は多いはずn 他言語インターフェース(FFI)は 関数型言語「実用」の になる(かも)
  12. 12. ご清聴ありがとうございました
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×