こんなことがしたい
コード書いてた時の悩み
● 実験手法毎に関数の内容
を変えたい
function calc(x, y)
if method == "add"
return x + y
elseif method == "sub"
return x - y
end
end
Slide 14
Slide 14 text
こんなことがしたい
コード書いてた時の悩み
● 実験手法毎に関数の内容
を変えたい
● 関数名は同じcalcだけを
使い回したい
function calc(x, y)
if method == "add"
return x + y
elseif method == "sub"
return x - y
end
end
Slide 15
Slide 15 text
こんなことがしたい
コード書いてた時の悩み
● 実験手法毎に関数の内容
を変えたい
● 関数名は同じcalcだけを
使い回したい
● 6桁規模のループ内で毎回
条件分岐をするのは嫌だ
function calc(x, y)
if method == "add"
return x + y
elseif method == "sub"
return x - y
end
end
Slide 16
Slide 16 text
便利なif式 abs1(x) = x >= 0 ? x : -x
Slide 17
Slide 17 text
if文による条件分岐
便利なif式
● よく見る普通のif文 val = rand(Float64)
if val > 0.8
fruit1 = "apple"
elseif val > 0.4
fruit1 = "banana"
else
fruit1 = "melon"
end
Slide 18
Slide 18 text
if文による条件分岐
便利なif式
● よく見る普通のif文
● valの値に応じてfruit1の
値が変化する
val = rand(Float64)
if val > 0.8
fruit1 = "apple"
elseif val > 0.4
fruit1 = "banana"
else
fruit1 = "melon"
end
Slide 19
Slide 19 text
if文による条件分岐
便利なif式
● よく見る普通のif文
● valの値に応じてfruit1の
値が変化する
● fruit1を条件毎に書くの
は冗長
val = rand(Float64)
if val > 0.8
fruit1 = "apple"
elseif val > 0.4
fruit1 = "banana"
else
fruit1 = "melon"
end
Slide 20
Slide 20 text
if式による条件分岐
便利なif式
● Juliaのif文は条件が真の
ブロックの最終行を返す
val = rand(Float64)
fruit2 = if val > 0.8
"apple"
elseif val > 0.4
"banana"
else
"melon"
end
Slide 21
Slide 21 text
if式による条件分岐
便利なif式
● Juliaのif文は条件が真の
ブロックの最終行を返す
● fruit2は一回書くだけで
先程と同じ処理ができる
val = rand(Float64)
fruit2 = if val > 0.8
"apple"
elseif val > 0.4
"banana"
else
"melon"
end
Slide 22
Slide 22 text
さっきのコードをこうしてこうじゃ!
便利なif式
function calc(x, y)
if method == "add"
return x + y
elseif method == "sub"
return x - y
end
end
Slide 23
Slide 23 text
さっきのコードをこうしてこうじゃ!
便利なif式
calc = if method == "add"
(x, y) -> x + y
elseif method == "sub"
(x, y) -> x - y
end
end
function calc(x, y)
if method == "add"
return x + y
elseif method == "sub"
return x - y
end
end
第一級関数の特徴
ちょっぴり入門 関数型言語
calc = if method == "add"
(x, y) -> x + y
elseif method == "sub"
(x, y) -> x - y
end
end
● if式は論理式の成立した
ブロックの値を返す
Slide 31
Slide 31 text
第一級関数の特徴
ちょっぴり入門 関数型言語
calc = if method == "add"
(x, y) -> x + y
elseif method == "sub"
(x, y) -> x - y
end
end
● if式は論理式の成立した
ブロックの値を返す
● if式の戻り値は無名関数
-> 高階関数っぽい...?
Slide 32
Slide 32 text
第一級関数の特徴
ちょっぴり入門 関数型言語
calc = if method == "add"
(x, y) -> x + y
elseif method == "sub"
(x, y) -> x - y
end
end
● if式は論理式の成立した
ブロックの値を返す
● if式の戻り値は無名関数
-> 高階関数っぽい...?
● 関数を変数calcへ代入
-> 第一級関数の特徴!