Rにおける関数型プログラミング

purrr で学ぶ中級関数型プログラミング

Colin Fay

Data Scientist & R Hacker at ThinkR

Rにおける計算について

「Rにおける計算を理解するには、2つの原則が役立ちます:

- 存在するものはすべてオブジェクトである。

- 起きることはすべて関数呼び出しである。」    -John Chambers

class(`+`)
"function"
class(`<-`)
"function"
purrr で学ぶ中級関数型プログラミング

関数型プログラミング言語としてのR

関数は以下が可能です

  • 操作できる

  • 変数に格納できる

  • ラムダ関数として使える

 

  • リストに格納できる

  • 関数の引数になれる

  • 関数の戻り値になれる

purrr で学ぶ中級関数型プログラミング

「純粋関数」について

純粋関数の特徴:

  • 出力は入力のみに依存する

  • 「副作用」がない

# 出力は入力のみに依存
# 副作用なし
sum(1:10)
55
mean(1:100)
50.5
purrr で学ぶ中級関数型プログラミング

非純粋関数の有用性

非純粋関数の特徴:

  • 環境に依存する

  • 「副作用」がある

# 出力が環境に依存
Sys.Date()
"2018-10-04"
# 副作用のみ
write.csv(iris, "iris.csv")
purrr で学ぶ中級関数型プログラミング

関数型プログラミングの参考資料

purrr で学ぶ中級関数型プログラミング

練習しましょう!

purrr で学ぶ中級関数型プログラミング

Preparing Video For Download...