SlideShare a Scribd company logo
Multiple dispatch and Julia
Julia Tokyo #6
あらためて、Juliaの特徴
• 読み書きの容易さ
• LLVM-based JIT コンパイラ
• 言語のコア部分が小さい
• 標準ライブラリがJuliaで実装
• マクロ(like LISP)
• …
• 多重ディスパッチ
多重ディスパッチって何?
参考:
http://docs.julialang.org/en/stable/manual/introduction/
多重ディスパッチって何?
• 多重定義されたメソッドの振る舞いが、レシーバの型だけでなく、すべての引数の(実
行時の)型に依存して決定される機能
• 簡単に言うと、このような記述となる
• f(a,b,c) ⟸ LIKE THIS
• a.f(b,c) ⟸ NOT THIS
• 単一ディスパッチのオブジェクト指向言語だと後者の記述になり、多重ディスパッチの言語だと前者の記述となる
引用: The Design Impact of Multiple Dispatch
http://nbviewer.jupyter.org/gist/StefanKarpinski/b8fe9dbb36c1427b9f22
多重ディスパッチの実装例
• 単一ディスパッチの例(Java) • 多重ディスパッチの例(Julia)
• 各クラスに所属するメソッドとして記述しない
• トップレベルを関数として記述できる
多重ディスパッチは何を解決するの?
• 関数をプロトコル的に記述でき、よりシンプルに書ける
• オブジェクト指向プログラミング言語と、関数型プログラミング言語のそれぞれにあった
Hardな点をクリアする(?)
• 新しく定義した方を、既存の操作に適用する → easy in o.o., hard in functional
• 新しく定義した操作を、 既存の型に適用する → easy in function, hard in o.o.
参考: The Design Impact of Multiple Dispatch
http://nbviewer.jupyter.org/gist/StefanKarpinski/b8fe9dbb36c1427b9f22
参考
The Design Impact of Multiple Dispatch
http://nbviewer.jupyter.org/gist/StefanKarpinski/b8fe9dbb36c1427b9f22
プログラミング言語 Julia 探訪 - Moriturus te saluto
http://dsng.hatenablog.com/entry/2014/01/27/173154#fn8
多重ディスパッチ - Wikipedia
https://ja.wikipedia.org/wiki/%E5%A4%9A%E9%87%8D%E3%83%87%E3%82%A3%E3%82%B9%E3%83%91%E3%83%83%E3%83
%81
Multiple dispatch - Wikipedia
https://en.wikipedia.org/wiki/Multiple_dispatch

More Related Content

PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
プログラミング.NET Framework出版記念座談会
PDF
Phperがgoをさわってみた
PPTX
C# と .NET と ・・・
PPTX
[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...
PDF
Data science packages
PDF
Rとpythonとjuliaで機械学習レベル4を目指す
Storytelling For The Web: Integrate Storytelling in your Design Process
2024 Trend Updates: What Really Works In SEO & Content Marketing
プログラミング.NET Framework出版記念座談会
Phperがgoをさわってみた
C# と .NET と ・・・
[ACL2016] Achieving Open Vocabulary Neural Machine Translation with Hybrid Wo...
Data science packages
Rとpythonとjuliaで機械学習レベル4を目指す
Ad

Multiple dispatch and Julia