SlideShare une entreprise Scribd logo
1  sur  60
Julia’s type system and
multiple dispatch
杜岳華
Julia Taiwan 發起人
Type
 Everything in Julia is an object.
 An object has its own type.
Type Declaration
 Type is similar to class in object-oriented
programming.
 But it has more meanings……
Type Declaration
 Concrete type
type Dog
name::AbstractString
color::AbstractString
end
dog = Dog(“Tom”, “brown”)
Name: Tom
Color: brown
Type Declaration
 Abstract type
abstract Animal
Julia's type
abstract Animal type Dog <: Animal
name::AbstractString
color::AbstractString
end
More similar to struct in C
instead of class in OOP.
You cannot declare any
fields in it.
Type Hierarchy
Ref:https://en.wikibooks.org/wiki/Introducing_Julia/Types
Type Hierarchy
Type System
 動態的,但擁有一些靜態型別系統的優點
 函式參數不加上型別,參數會被設成Any,加上型別
可以增加效能跟系統的穩健性
 參數化型別可以實現generic type
 型別系統是以階層式(hierarchical)架構建立的,
明確描述型別之間的關係
Type System
Tuple
Union
Algebraic type
 Tuple
 (1, 2, 3)
 immutable
 Union
 Union{Integer, AbstractString}
 I don't figure out the key scenario to use it……
The "nothing"
 The singleton of type Void, the only object belongs
to the type Void.
 While function does not return, it returns nothing!
Union{Integer, Void}?
 No! Nullable!
 Sometimes, you are not sure a function gives a
result, then you can use Nullable.
However…
 Single inheritance
 Abstract types cannot be instantiated.
 Concrete types cannot be inherited.
 So concrete type can only be the leaf in the
hierarchy.
http://www.quickmeme.com/meme/36b
esu
It cannot be reused!
 The major reason to use object-oriented programming
is reusability.
 However……
 Behaviors are not inherited.
 Fields are not inherited.
 It cannot be reused!!
Hopefully, we have……
 Parametric type
 Multiple dispatch
Parametric type
 The generic programming of Julia
 It help draw out the type of fields.
 Flexibility and constraints
type Coordinate{T <: Integer}
x::T
y::T
end
Before talking about multiple
dispatch…
 Let's review polymorphism!
Polymorphism
 Dog and Cat have voice.
 But their voices are different!
 Subclass繼承superclass的method,
method會依據不同的subclass有不同
的行為
Animal
Dog Cat
Polymorphism
 polymorphism不只是單單放在物件導向的繼承上,只要
符合同樣的function會依據不同型別而有不同行為就算
 若是依據維基百科的定義:
 Polymorphism is the provision of a single interface to
entities of different types.
 多型為不同型別的實體提供了單一介面
 C++的函式多載(function overloading)跟運算子多載
(operator overloading)
Ad hoc polymorphism
 依據傳入參數的型別組合,決定要使用哪一個
function,而為不同參數的型別組合定義不同行為是
特設的,而不是源自於內建的型別系統
 E.g. Function overloading, operator overloading
 operator overloading其實是function overloading的
特例!
 𝑓 𝑡𝑦𝑝𝑒1 𝑎1, 𝑡𝑦𝑝𝑒2 𝑎2, 𝑡𝑦𝑝𝑒3 𝑎3 . . .
 1 + 2 ≡ +(1, 2) ≡ 𝑎𝑑𝑑(1, 2)
Parametric polymorphism
 parametric polymorphism提供一種行為框架,直接
定義一個function,然後依據傳入的型別做操作
 E.g. C++的template (但是他定義的是data type而不是
function)
 泛型(generic programming),就是parametric
polymorphism的一種表現方式
 在其他語言中generic functions
Subtyping
 The type of polymorphism in OOP.
 Subclass 繼承了superclass的method介面,但是實
作是依據subclass的method內容
 我們通常把subclass當成superclass的子型別
(subtype)
Multiple dispatch
 It deals with “how to choose a function?”
double
double
args
Single dispatch
 or dynamic dispatch
Python code
class Foo:
...
def double(x):
return 2*x
class Bar:
...
def double(x):
return str(x)*2
double
double
args
Foo
Bar
Back to multiple dispatch
Julia code
function double(obj::Foo, x)
return 2*x
end
function double(obj::Bar, x)
return string(x)*2
end
double
double
args
(obj::Foo, x::Any)
(obj::Bar, x::Any)
You can add/override them easily.
function double(obj::Foo, x)
return 2*x
end
function double(obj::Bar, x)
return string(x)*2
end
Open-close
principle
function double(obj::Bar, x)
return “2”*x
end
Parametric method
 Generic function
function compare{T <: Real}(x::T, y::T)
if x > y
return 1
elseif x == y
return 0
else
return -1
end
end
Parametric method
 聰明的設計讓multiple dispatch替你"回答問題"
same_type{T}(x::T, y::T) = true
same_type(x, y) = false
same_type(1, 2) # true
same_type(1, 2.0) # false
避免模糊語意
g(x::Float64, y) = 2x + y
g(x, y::Float64) = x + 2y
g(x::Float64, y::Any) = 2x + y
g(x::Any, y::Float64) = x + 2y
從精確到廣泛是個好順序
g(x::Float64, y::Float64) = 2x + 2y
g(x::Float64, y) = 2x + y
g(x, y::Float64) = x + 2y
g(2.0, 3) # 7.0
g(2, 3.0+) # 8.0
g(2.0, 3.0) # 10.0
Constructors
 要建構一個object,constructor是少不了的
 There are 2 major kinds of constructor:
 Inner constructor
 Outer constructor
Outer constructor
 顧名思義,這是一個定義在型別定義之外的
constructor,他跟一般的method沒什麼不同
type Foo
bar
baz
End
Foo(x) = Foo(x,x)
Foo() = Foo(0)
Foo(2) # Foo(2, 2)
Foo() # Foo(0, 0)
Outer constructor
 你可以很簡單的在型別宣告之外加上很多不同的
constructor,如同其他語言的constructor
overloading一般
 擴充功能的時候很好用
Inner constructor
 inner constructor,只能有一個
 使用`new`是inner constructor的特權
type OrderedPair
x::Real
y::Real
OrderedPair(x, y) = x > y ? error("out
of order") : new(x, y)
end
Outer and inner constructor
Inner
Outer OuterOuter
Parametric Constructors
 Constructor can be parametric!
type Point{T<:Real}
x::T
y::T
end
type Point{T<:Real}
x::T
y::T
Point(x, y) = new(x, y)
end
Point{T<:Real}(x::T, y::T)
= Point{T}(x, y)
=
Break!
 Next, the OOP in Julia!
OOP in Julia
 先來複習一下:
 Encapsulation (封裝): 定義fields跟methods,甚至存取權
限
 Inheritance (繼承): 組織類別之間的關係,以便重用
 Polymorphism (多型): 使可以同樣的methods根據不同的
類別展現出不同的行為
Julia的哲學
 Polymorphism
 Multiple dispatch佔了重要的角色
 解耦子型別繼承了不想要的方法
 Inheritance
 Julia的型別系統佔了重要的角色
 只描述型別之間關係,而非實作
 Encapsulation
 若是中介的隱私狀態是不需要的,那封裝也是不需要的!
以往OOP方式
 Subtyping + single dispatch
 E.g. C++, Java, Python……
但是subtyping通常會有個問題……
 當inheritance發生的時候,superclass的行為都會被
subclass繼承,如此一來,確認superclass跟
subclass的關係就需要無比精確,不然subclass就會
繼承到不必要的行為
 有些語言設法將method綁定在class上的作法打破,
像是Swift、Scala或Rust,用trait
精巧設計
 Parametric polymorphism + multiple dispatch
 E.g. Julia, Common Lisp (?)
 Subtyping
 面對一個類別並定義他的行為
 Julia
 希望你在定義行為的時候考慮到整個type hierarchy,你需要對
某群 (特定範圍)的type定義行為
 善用泛型,讓你在定義行為的時候可以收放自如
OOP in Julia style
abstract Animal
immutable Dog <: Animal
color::AbstractString
species::AbstractString
end
immutable Cat <: Animal
color::AbstractString
species::AbstractString
end
OOP in Julia style
function color(a::Animal)
return a.color
end
function voice(d::Dog)
return "bark"
end
function voice(c::Cat)
return "meow"
end
OOP in Julia style
d1 = Dog("yellow", "Labrador")
voice(d1) # "bark“
c1 = Cat("brown", "?")
voice(c1) # "meow"
OOP in traditional style
type Foo
bar::Int64
baz::Function
function Foo(x::Int64)
this = new()
this.bar = x
function baz(input::AbstractString)
println(input)
end
function baz(input::Int64)
println(input * 10)
end
this.baz = baz
return this
end
end
OOP in traditional style
foo = Foo(10)
foo.bar # 10
foo.baz("Hello world!") # Hello world!
foo.baz(5) # 50
Julia’s object vs OOP
In software engineering aspect…
 Separation of interface and implementation is an
important issue…
bar()
Abstract type as an interface
Fooabstract Foo
function bar(obj::Foo, x)
……
end
Method signature as an interface
function bar(obj::Foo, x)
end
bar()
Foo
Julia tastes good!
http://images.clipartpanda.com/taste-clipart-dT8oABxEc.jpeg
What kind of language Julia belongs
to?
 We usually say that Java and Python are object-
oriented languages.
 So, how about Julia?
 Julia majors in metaprogramming, and minors in
object-oriented programming.
Object-oriented
programming
metaprogramming
https://img.xiaomac.com/playes/2007/0305008E9.JPG
Elegant but complicated type
system
Programming paradigms
 Pseudo-object-oriented programming
 Functional programming
 Metaprogramming
Q&A
Thank you for attention

Contenu connexe

Tendances

Object-Oriented Programming with C#
Object-Oriented Programming with C#Object-Oriented Programming with C#
Object-Oriented Programming with C#Svetlin Nakov
 
Testing for share
Testing for share Testing for share
Testing for share Rajeev Mehta
 
Basics of Object Oriented Programming in Python
Basics of Object Oriented Programming in PythonBasics of Object Oriented Programming in Python
Basics of Object Oriented Programming in PythonSujith Kumar
 
C# Summer course - Lecture 3
C# Summer course - Lecture 3C# Summer course - Lecture 3
C# Summer course - Lecture 3mohamedsamyali
 
Python unit 3 m.sc cs
Python unit 3 m.sc csPython unit 3 m.sc cs
Python unit 3 m.sc csKALAISELVI P
 
Lecture 4_Java Method-constructor_imp_keywords
Lecture   4_Java Method-constructor_imp_keywordsLecture   4_Java Method-constructor_imp_keywords
Lecture 4_Java Method-constructor_imp_keywordsmanish kumar
 
Unit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arraysUnit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arraysDevaKumari Vijay
 
‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3Mahmoud Alfarra
 
Polymorphism in Java
Polymorphism in JavaPolymorphism in Java
Polymorphism in JavaJava2Blog
 
The Ruby Object Model by Rafael Magana
The Ruby Object Model by Rafael MaganaThe Ruby Object Model by Rafael Magana
The Ruby Object Model by Rafael MaganaRafael Magana
 
Lecture - 3 Variables-data type_operators_oops concept
Lecture - 3 Variables-data type_operators_oops conceptLecture - 3 Variables-data type_operators_oops concept
Lecture - 3 Variables-data type_operators_oops conceptmanish kumar
 
C# Summer course - Lecture 4
C# Summer course - Lecture 4C# Summer course - Lecture 4
C# Summer course - Lecture 4mohamedsamyali
 
Anton Kasyanov, Introduction to Python, Lecture5
Anton Kasyanov, Introduction to Python, Lecture5Anton Kasyanov, Introduction to Python, Lecture5
Anton Kasyanov, Introduction to Python, Lecture5Anton Kasyanov
 

Tendances (20)

Inheritance Mixins & Traits
Inheritance Mixins & TraitsInheritance Mixins & Traits
Inheritance Mixins & Traits
 
Chapter 07 inheritance
Chapter 07 inheritanceChapter 07 inheritance
Chapter 07 inheritance
 
Java
JavaJava
Java
 
Object-Oriented Programming with C#
Object-Oriented Programming with C#Object-Oriented Programming with C#
Object-Oriented Programming with C#
 
Python oop third class
Python oop   third classPython oop   third class
Python oop third class
 
Testing for share
Testing for share Testing for share
Testing for share
 
Basics of Object Oriented Programming in Python
Basics of Object Oriented Programming in PythonBasics of Object Oriented Programming in Python
Basics of Object Oriented Programming in Python
 
‫Chapter3 inheritance
‫Chapter3 inheritance‫Chapter3 inheritance
‫Chapter3 inheritance
 
C# Summer course - Lecture 3
C# Summer course - Lecture 3C# Summer course - Lecture 3
C# Summer course - Lecture 3
 
Python unit 3 m.sc cs
Python unit 3 m.sc csPython unit 3 m.sc cs
Python unit 3 m.sc cs
 
Lecture 4_Java Method-constructor_imp_keywords
Lecture   4_Java Method-constructor_imp_keywordsLecture   4_Java Method-constructor_imp_keywords
Lecture 4_Java Method-constructor_imp_keywords
 
Unit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arraysUnit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arrays
 
‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3
 
Polymorphism in Java
Polymorphism in JavaPolymorphism in Java
Polymorphism in Java
 
Python lecture 8
Python lecture 8Python lecture 8
Python lecture 8
 
The Ruby Object Model by Rafael Magana
The Ruby Object Model by Rafael MaganaThe Ruby Object Model by Rafael Magana
The Ruby Object Model by Rafael Magana
 
Lecture - 3 Variables-data type_operators_oops concept
Lecture - 3 Variables-data type_operators_oops conceptLecture - 3 Variables-data type_operators_oops concept
Lecture - 3 Variables-data type_operators_oops concept
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
C# Summer course - Lecture 4
C# Summer course - Lecture 4C# Summer course - Lecture 4
C# Summer course - Lecture 4
 
Anton Kasyanov, Introduction to Python, Lecture5
Anton Kasyanov, Introduction to Python, Lecture5Anton Kasyanov, Introduction to Python, Lecture5
Anton Kasyanov, Introduction to Python, Lecture5
 

En vedette

20170217 julia小程式到專案發布之旅
20170217 julia小程式到專案發布之旅20170217 julia小程式到專案發布之旅
20170217 julia小程式到專案發布之旅岳華 杜
 
20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門岳華 杜
 
手把手Julia及簡易IDE安裝
手把手Julia及簡易IDE安裝手把手Julia及簡易IDE安裝
手把手Julia及簡易IDE安裝岳華 杜
 
20170317 functional programming in julia
20170317 functional programming in julia20170317 functional programming in julia
20170317 functional programming in julia岳華 杜
 
Unit 1 - Our Planetary Neighborhood
Unit 1 - Our Planetary NeighborhoodUnit 1 - Our Planetary Neighborhood
Unit 1 - Our Planetary NeighborhoodKCTCS
 

En vedette (8)

20170217 julia小程式到專案發布之旅
20170217 julia小程式到專案發布之旅20170217 julia小程式到專案發布之旅
20170217 julia小程式到專案發布之旅
 
20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門
 
手把手Julia及簡易IDE安裝
手把手Julia及簡易IDE安裝手把手Julia及簡易IDE安裝
手把手Julia及簡易IDE安裝
 
20170317 functional programming in julia
20170317 functional programming in julia20170317 functional programming in julia
20170317 functional programming in julia
 
The sound of wealth
The sound of wealthThe sound of wealth
The sound of wealth
 
Mobile Apps Dvevelopment
Mobile Apps DvevelopmentMobile Apps Dvevelopment
Mobile Apps Dvevelopment
 
Unit 1 - Our Planetary Neighborhood
Unit 1 - Our Planetary NeighborhoodUnit 1 - Our Planetary Neighborhood
Unit 1 - Our Planetary Neighborhood
 
Sumit Sanyal - SD
Sumit Sanyal - SDSumit Sanyal - SD
Sumit Sanyal - SD
 

Similaire à 20170113 julia’s type system and multiple dispatch

Similaire à 20170113 julia’s type system and multiple dispatch (20)

Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
C++ Interview Questions
C++ Interview QuestionsC++ Interview Questions
C++ Interview Questions
 
Oop features java presentationshow
Oop features java presentationshowOop features java presentationshow
Oop features java presentationshow
 
C# interview
C# interviewC# interview
C# interview
 
Object-oriented programming
Object-oriented programmingObject-oriented programming
Object-oriented programming
 
Java object oriented programming - OOPS
Java object oriented programming - OOPSJava object oriented programming - OOPS
Java object oriented programming - OOPS
 
Inheritance
InheritanceInheritance
Inheritance
 
OOPS & C++(UNIT 4)
OOPS & C++(UNIT 4)OOPS & C++(UNIT 4)
OOPS & C++(UNIT 4)
 
core java
core javacore java
core java
 
Object-oriented Basics
Object-oriented BasicsObject-oriented Basics
Object-oriented Basics
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Unit3 part1-class
Unit3 part1-classUnit3 part1-class
Unit3 part1-class
 
Question and answer Programming
Question and answer ProgrammingQuestion and answer Programming
Question and answer Programming
 
Function overloading
Function overloadingFunction overloading
Function overloading
 
13 interfaces
13 interfaces13 interfaces
13 interfaces
 
11 interfaces
11 interfaces11 interfaces
11 interfaces
 
Notes on c++
Notes on c++Notes on c++
Notes on c++
 
Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#
 
Presentation 4th
Presentation 4thPresentation 4th
Presentation 4th
 
My c++
My c++My c++
My c++
 

Plus de 岳華 杜

[COSCUP 2023] 我的Julia軟體架構演進之旅
[COSCUP 2023] 我的Julia軟體架構演進之旅[COSCUP 2023] 我的Julia軟體架構演進之旅
[COSCUP 2023] 我的Julia軟體架構演進之旅岳華 杜
 
Julia: The language for future
Julia: The language for futureJulia: The language for future
Julia: The language for future岳華 杜
 
The Language for future-julia
The Language for future-juliaThe Language for future-julia
The Language for future-julia岳華 杜
 
20190907 Julia the language for future
20190907 Julia the language for future20190907 Julia the language for future
20190907 Julia the language for future岳華 杜
 
Metaprogramming in julia
Metaprogramming in juliaMetaprogramming in julia
Metaprogramming in julia岳華 杜
 
Introduction to julia
Introduction to juliaIntroduction to julia
Introduction to julia岳華 杜
 
自然語言處理概覽
自然語言處理概覽自然語言處理概覽
自然語言處理概覽岳華 杜
 
Introduction to machine learning
Introduction to machine learningIntroduction to machine learning
Introduction to machine learning岳華 杜
 
Semantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
Semantic Segmentation - Fully Convolutional Networks for Semantic SegmentationSemantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
Semantic Segmentation - Fully Convolutional Networks for Semantic Segmentation岳華 杜
 
Batch normalization 與他愉快的小伙伴
Batch normalization 與他愉快的小伙伴Batch normalization 與他愉快的小伙伴
Batch normalization 與他愉快的小伙伴岳華 杜
 
從 VAE 走向深度學習新理論
從 VAE 走向深度學習新理論從 VAE 走向深度學習新理論
從 VAE 走向深度學習新理論岳華 杜
 
COSCUP: Foreign Function Call in Julia
COSCUP: Foreign Function Call in JuliaCOSCUP: Foreign Function Call in Julia
COSCUP: Foreign Function Call in Julia岳華 杜
 
COSCUP: Metaprogramming in Julia
COSCUP: Metaprogramming in JuliaCOSCUP: Metaprogramming in Julia
COSCUP: Metaprogramming in Julia岳華 杜
 
COSCUP: Introduction to Julia
COSCUP: Introduction to JuliaCOSCUP: Introduction to Julia
COSCUP: Introduction to Julia岳華 杜
 
Introduction to Julia
Introduction to JuliaIntroduction to Julia
Introduction to Julia岳華 杜
 
20180506 Introduction to machine learning
20180506 Introduction to machine learning20180506 Introduction to machine learning
20180506 Introduction to machine learning岳華 杜
 
20171127 當julia遇上資料科學
20171127 當julia遇上資料科學20171127 當julia遇上資料科學
20171127 當julia遇上資料科學岳華 杜
 
20171117 oop and design patterns in julia
20171117 oop and design patterns in julia20171117 oop and design patterns in julia
20171117 oop and design patterns in julia岳華 杜
 
20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia岳華 杜
 
20170807 julia的簡單而高效資料處理
20170807 julia的簡單而高效資料處理20170807 julia的簡單而高效資料處理
20170807 julia的簡單而高效資料處理岳華 杜
 

Plus de 岳華 杜 (20)

[COSCUP 2023] 我的Julia軟體架構演進之旅
[COSCUP 2023] 我的Julia軟體架構演進之旅[COSCUP 2023] 我的Julia軟體架構演進之旅
[COSCUP 2023] 我的Julia軟體架構演進之旅
 
Julia: The language for future
Julia: The language for futureJulia: The language for future
Julia: The language for future
 
The Language for future-julia
The Language for future-juliaThe Language for future-julia
The Language for future-julia
 
20190907 Julia the language for future
20190907 Julia the language for future20190907 Julia the language for future
20190907 Julia the language for future
 
Metaprogramming in julia
Metaprogramming in juliaMetaprogramming in julia
Metaprogramming in julia
 
Introduction to julia
Introduction to juliaIntroduction to julia
Introduction to julia
 
自然語言處理概覽
自然語言處理概覽自然語言處理概覽
自然語言處理概覽
 
Introduction to machine learning
Introduction to machine learningIntroduction to machine learning
Introduction to machine learning
 
Semantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
Semantic Segmentation - Fully Convolutional Networks for Semantic SegmentationSemantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
Semantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
 
Batch normalization 與他愉快的小伙伴
Batch normalization 與他愉快的小伙伴Batch normalization 與他愉快的小伙伴
Batch normalization 與他愉快的小伙伴
 
從 VAE 走向深度學習新理論
從 VAE 走向深度學習新理論從 VAE 走向深度學習新理論
從 VAE 走向深度學習新理論
 
COSCUP: Foreign Function Call in Julia
COSCUP: Foreign Function Call in JuliaCOSCUP: Foreign Function Call in Julia
COSCUP: Foreign Function Call in Julia
 
COSCUP: Metaprogramming in Julia
COSCUP: Metaprogramming in JuliaCOSCUP: Metaprogramming in Julia
COSCUP: Metaprogramming in Julia
 
COSCUP: Introduction to Julia
COSCUP: Introduction to JuliaCOSCUP: Introduction to Julia
COSCUP: Introduction to Julia
 
Introduction to Julia
Introduction to JuliaIntroduction to Julia
Introduction to Julia
 
20180506 Introduction to machine learning
20180506 Introduction to machine learning20180506 Introduction to machine learning
20180506 Introduction to machine learning
 
20171127 當julia遇上資料科學
20171127 當julia遇上資料科學20171127 當julia遇上資料科學
20171127 當julia遇上資料科學
 
20171117 oop and design patterns in julia
20171117 oop and design patterns in julia20171117 oop and design patterns in julia
20171117 oop and design patterns in julia
 
20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia
 
20170807 julia的簡單而高效資料處理
20170807 julia的簡單而高效資料處理20170807 julia的簡單而高效資料處理
20170807 julia的簡單而高效資料處理
 

Dernier

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 

Dernier (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

20170113 julia’s type system and multiple dispatch