もくじ
Scalaでの部分的な関数型プログラミング
自己紹介
エムスリー株式会社
インターネットを活用し医療を革変する
関数型プログラミングとは
- 純粋関数だけを使う
- 純粋関数=副作用のない関数
本当に純粋関数だけでプログラミングできんの?
純粋関数だけというのは強力だけど学習コスト高い
関数型プログラミング化
IOとかを純粋関数にするのは難しい。
printlnとかは副作用がある!でもこれは純粋関数で表現しようとするとむずい。
部分的な関数型プログラミング
簡単に純粋関数プログラミングできることだけをやる
2レイヤーに分ける
- 副作用ありな部分
- DBアクセスなどIOなど...
- 副作用なしな部分
2レイヤーの依存関係
純粋な層とは
- 純粋な層がコアなビジネスロジックになる
- テストしやすい
- 再利用しやすい
- DDDでいうとdomainレイヤーのことだなぁ
結局
- 最初は「純粋な関数型レイヤーとはなにか」を考えていた
- 実装していくうちに「コアなビジネスロジックは何か」を考えればいいとわかってきた。
今後
- 副作用がある部分が「コアなビジネスロジック」になるかもしれない?
- その時にはDBアクセスとかIOとかを純粋関数で表現する必要が出てくる?
参考
Scalaでの部分的な関数型プログラミングのLTを聞いてきたメモ。 #ScalaMatsuri pic.twitter.com/QrlpY8T9oS
— Nakayama san (@nakayama_san) 2018年3月17日