Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
怖くない Cats @jooohn1234
Slide 2
Slide 2 text
M3, Inc. @jooohn1234 ● じょん と呼んでください ● エムスリーのエンジニア ○ Scala ・ FP 好き ○ 猫2匹と同居
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
モナドは プログラム可能な セミコロン!!
Slide 13
Slide 13 text
やばい世界に 足を踏み入れて しまった
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
完全にこわい
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
Catsは 怖くない!
Slide 30
Slide 30 text
Motivations ● Approachability ● Modularity ● Documentation ● Efficiency
Slide 31
Slide 31 text
Motivations ● Approachability ● Modularity ● Documentation ● Efficiency
Slide 32
Slide 32 text
Motivations ● Approachability ● Modularity ● Documentation ● Efficiency ドキュメントが充実していて とっつきやすい!
Slide 33
Slide 33 text
Monoid
Slide 34
Slide 34 text
No content
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
二項演算 (Int, Int) => Int 単位元 Int
Slide 40
Slide 40 text
二項演算 (Int, Int) => Int 単位元 Int こういう感じの性質を 持っているやつが Monoid 注:ざっくりした説明です
Slide 41
Slide 41 text
例でなんとなく理解するMonoid (厳密には Monoid lawsを参照) Monoid 単位元 (empty) 二項演算 (combine) 例 Int の 加算 0 + 0 + 1 + 2 + 0 = 3 Int の 乗算 1 * 1 * 3 * 5 * 1 = 15 List の 連結 Nil ::: Nil ::: List(3) ::: List(5, 8) ::: Nil = List(3, 5, 8)
Slide 42
Slide 42 text
Monoid laws law Intの加算 の例 (a combine b) combine c = a combine (b combine c) (1 + 2) + 3 = 6 1 + (2 + 3) = 6 empty combine a = a 0 + 1234 = 1234 a combine empty = a 1234 + 0 = 1234
Slide 43
Slide 43 text
なんかわかるきがする!
Slide 44
Slide 44 text
・・・
Slide 45
Slide 45 text
それで なにがうれしいんだっけ
Slide 46
Slide 46 text
No content
Slide 47
Slide 47 text
No content
Slide 48
Slide 48 text
No content
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
みたことあるきがする
Slide 51
Slide 51 text
No content
Slide 52
Slide 52 text
No content
Slide 53
Slide 53 text
こういうときある
Slide 54
Slide 54 text
こういうときある
Slide 55
Slide 55 text
No content
Slide 56
Slide 56 text
なんかややこしい
Slide 57
Slide 57 text
No content
Slide 58
Slide 58 text
Monoidはつくれる!
Slide 59
Slide 59 text
No content
Slide 60
Slide 60 text
全てのMonoidに対して Foldable#foldMapが使える
Slide 61
Slide 61 text
No content
Slide 62
Slide 62 text
・・・
Slide 63
Slide 63 text
ほとんど Int と同じなのに めんどうだなあ
Slide 64
Slide 64 text
No content
Slide 65
Slide 65 text
No content
Slide 66
Slide 66 text
No content
Slide 67
Slide 67 text
Int と Price は値を変えずに交換可能
Slide 68
Slide 68 text
No content
Slide 69
Slide 69 text
No content
Slide 70
Slide 70 text
No content
Slide 71
Slide 71 text
No content
Slide 72
Slide 72 text
No content
Slide 73
Slide 73 text
No content
Slide 74
Slide 74 text
便利!
Slide 75
Slide 75 text
雑感 ● Cats は怖くないし便利! ○ Approachability / Documentation ■ ドキュメントを読み進めながら学習が進む。 ○ 便利と思ったものだけ使えば良い ■ 自分やチームの成長とともに徐々に扱う範囲を増やしていける。 ○ 1エンジニアとして学んでいて楽しい。 ■ 汎用的で腐りにくい抽象化の知識。 ● とはいえ、濫用には注意 ○ 使ったほうがコードが理解しやすい / 堅牢になるといった場面で使うべき。 ■ 『ハンマーを持つ人には全てが釘に見える』に注意。 ○ 自分やチームメンバーの理解を超えて使わない。 ■ 無理して使うものではない。