purrr で学ぶ中級関数型プログラミング
Colin Fay
Data Scientist & R Hacker at ThinkR
「Rにおける計算を理解するには、2つの原則が役立ちます:
- 存在するものはすべてオブジェクトである。
- 起きることはすべて関数呼び出しである。」 -John Chambers
class(`+`)
"function"
class(`<-`)
"function"
関数は以下が可能です
操作できる
変数に格納できる
ラムダ関数として使える
リストに格納できる
関数の引数になれる
関数の戻り値になれる
純粋関数の特徴:
出力は入力のみに依存する
「副作用」がない
# 出力は入力のみに依存
# 副作用なし
sum(1:10)
55
mean(1:100)
50.5
非純粋関数の特徴:
環境に依存する
「副作用」がある
# 出力が環境に依存
Sys.Date()
"2018-10-04"
# 副作用のみ
write.csv(iris, "iris.csv")
purrr で学ぶ中級関数型プログラミング