Slide 1

Slide 1 text

Ͷ͜ͱ͸͡ΊΔؔ਺ܕ ΀ʹ (ehlfin_puni / punilfin) 2020/03/27

Slide 2

Slide 2 text

͜͡͠ΐ͏͔͍ ͳ·͑ɿ΀ʹ VRC ID : ehlfin_puni Twitter : punilfin 2020/02/10 ʹ VRC ʹ͖·ͨ͠ ͠ΐ͠Μ͠ΌͰ͢ɽ΍ͯ͘͞͠͠Ͷ ͖͢ɿ͢͏͕͘ ͖͚ͩ͢Ͳͳʹ΋Θ͔Βͳ͍Ͱ͢ɽ΍ͯ͘͞͠͠Ͷ ͖͢͡Όͳ͍ɿ΀Ζ͙ΒΈΜ͙ ͱ ͖͔͍͕͘͠Ύ͏ ͱ͘ʹ͖Β͍ɿ JavaScript

Slide 3

Slide 3 text

͍·͔Β Scala with Cats ͱ͍͏ຊͷ࿩Λ͠·͢ Cats Λμγʹͯؔ͠਺ܕͷߟ͑ํΛֶͿຊ Cats ʜ Scala ͰΰϦΰϦؔ਺ܕ͢ΔͷΛิॿ͢ΔϥΠϒϥϦ Cats ͷ࢖͍ํΛֶͿຊ

Slide 4

Slide 4 text

͜͜ʹ͋Γ·͢ Figure: https://underscore.io/books/scala-with-cats/

Slide 5

Slide 5 text

ಡΜͩܦҢ ͓͠͝ͱͰ Scala ͷϨϏϡʔΛ͠ͳ͍ͱ͍͚ͳ͍ Scala ஌Βͳ͍ʂ ݍ࿦ษڧ͚ͯͨ͠Ͳ Monad ͕ग़ͯ͘Δલʹ๞͖ͯ΍Ίͨ Monad ஌Βͳ͍ʂ ྆ํ·ͱΊͯษڧͰ͖ͳ͍͔ͳʁ

Slide 6

Slide 6 text

ຊͷষཱͯ Monoids and Semigroups Functors Monads Monad Transformers Semigroupal and Applicative Foldable and Traverse Testing Asynchronous Code Map-Reduce Data Validation CRDTs ײ૝ ාͦ͏

Slide 7

Slide 7 text

ಡΜͰΈͨײ૝ ͋·Γා͘ͳ͍ Option, Future, List ͳͲɼScala ͰΑ͘࢖͏֓೦ΛΑ͘ݟ௚͢ͱ͜Ζ͔Βελʔτ ͦΕΒͷڞ௨ੑ࣭ΛऔΓग़͢͜ͱͰ Monad ͳͲͷந৅֓೦΁ঃʑʹ཭཮

Slide 8

Slide 8 text

࠷ۙ͋ͬͨ͜ͱ Javascript ͷ࣭໰Λ͞Εͨ ΍Γ͍ͨ͜ͱɿ ʮ2 ͭͷ Promise ͷ݁Ռ͕ग़ଗ͔ͬͯΒɺ2 ͭͷ݁ՌΛՃ޻ͯ͠ฦ͢ʯ ฉ͍ͨॠؒʹʮݴޠͷ built-in ؔ਺͚ͩͰͰ͖ͦ͏ͩʯͱࢥͬͨ ௐ΂ͨΒ Promise.all() ͕ώοτͨ͠

Slide 9

Slide 9 text

ਪ࿦աఔ ܕΫϥε F ʹରͯ͠ F[A] ͱ F[B] ͔Β F[A,B] ܕΛ࡞Γ͍ͨ F ͕ Cartesian ͳΒ product ͰͰ͖Δ ͳͷͰ Promise ͕ Cartesian Ͱ͋Δ͜ͱΛࣔͤ͹ OK Promise ͸ Scala Ͱ͍͏ͱ͜Ζͷ Future ͔ͩΒ Monad Ұൠʹ Monad ) Applicative ) Cartesian ͳͷͰ OK ࢒೦ͳ͓஌Βͤ ͜ͷਪ࿦͸େ͖ͳ͕݀͋Δ Javascript ͷ Promise ͸ Monad Ͱ͸ͳ͍ Functor Ͱ͢Βͳ͍ Cartesian ʹݟ͑Δͷ͸ଟ෼ۮવ

Slide 10

Slide 10 text

ݸਓతʹࢥ͍ͬͯΔ͜ͱ ؔ਺ܕͷߟ͑ํ͕ʮৗʹਖ਼͍͠ʯΘ͚͸ͳ͍ ͕ɼ ʮؔ਺ܕҎ֎͸ؔ਺ܕͷߟ͑ํ͕࢖͑ͳ͍ʯͷ͔ʁ Ͳ͜·Ͱʢແཧͳ͘ʣ௨༻͢Δ͔͸ߟ͍͑ͨ ਺ʢཧ޻ʣֶ͔Βٕज़ാʹೖͬͨࢲʹͱͬͯɼ ʮ਺ֶͬΆ͍ߟ͑ํ͕࢖͑Δ͜ͱʯ͸ཧղΛ޿͛ Δ্Ͱେ͖ͳॿ͚ʹͳΔ

Slide 11

Slide 11 text

·ͱΊ Figure: Cats ͷ࿩Λ͠·ͨ͠ɽࣸਅ͸࣮ՈͷͶ͜Ͱ͢ɽ