SlideShare a Scribd company logo
1 of 6
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

Similar to Multiple dispatch and Julia

Cat tool overview for CEDEC2011 Draft
Cat tool overview for CEDEC2011 DraftCat tool overview for CEDEC2011 Draft
Cat tool overview for CEDEC2011 DraftSelf Employed
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラムamusementcreators
 
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能Tadahiro Ishisaka
 
ページャ lessを使いこなす
ページャ lessを使いこなすページャ lessを使いこなす
ページャ lessを使いこなすToshiyuki Shimono
 

Similar to Multiple dispatch and Julia (6)

Cat tool overview for CEDEC2011 Draft
Cat tool overview for CEDEC2011 DraftCat tool overview for CEDEC2011 Draft
Cat tool overview for CEDEC2011 Draft
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
 
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能
 
Lombok ハンズオン
Lombok ハンズオンLombok ハンズオン
Lombok ハンズオン
 
ページャ lessを使いこなす
ページャ lessを使いこなすページャ lessを使いこなす
ページャ lessを使いこなす
 
Real world lisp
Real world lispReal world lisp
Real world lisp
 

Multiple dispatch and Julia