Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ねことはじめる関数型 / functional programming with cats
Search
ぷに
February 29, 2020
Technology
1
1.3k
ねことはじめる関数型 / functional programming with cats
VRC LT #7
ぷに
February 29, 2020
Tweet
Share
More Decks by ぷに
See All by ぷに
数値計算の呪いとあそぼぅ!!/ the curse of numerical calculus
punilfin
1
47
Other Decks in Technology
See All in Technology
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
140
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
59k
チームで安全にClaude Codeを利用するためのプラクティス / team-claude-code-practices
tomoki10
5
2.5k
旬のブリと旬の技術で楽しむ AI エージェント設計開発レシピ
chack411
1
110
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
Digitization部 紹介資料
sansan33
PRO
1
6.4k
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
1
610
松尾研LLM講座2025 応用編Day3「軽量化」 講義資料
aratako
15
4.9k
コールドスタンバイ構成でCDは可能か
hiramax
0
130
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
730
形式手法特論:コンパイラの「正しさ」は証明できるか? #burikaigi / BuriKaigi 2026
ytaka23
15
4.1k
Featured
See All Featured
Building Adaptive Systems
keathley
44
2.9k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.1k
Test your architecture with Archunit
thirion
1
2.1k
Unsuck your backbone
ammeep
671
58k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
230
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
1
340
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.8k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
190
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
0
1k
Transcript
Ͷ͜ͱ͡ΊΔؔܕ ʹ (ehlfin_puni / punilfin) 2020/03/27
͜͡͠ΐ͏͔͍ ͳ·͑ɿʹ VRC ID : ehlfin_puni Twitter : punilfin 2020/02/10
ʹ VRC ʹ͖·ͨ͠ ͠ΐ͠Μ͠ΌͰ͢ɽͯ͘͞͠͠Ͷ ͖͢ɿ͢͏͕͘ ͖͚ͩ͢ͲͳʹΘ͔Βͳ͍Ͱ͢ɽͯ͘͞͠͠Ͷ ͖͢͡Όͳ͍ɿΖ͙ΒΈΜ͙ ͱ ͖͔͍͕͘͠Ύ͏ ͱ͘ʹ͖Β͍ɿ JavaScript
͍·͔Β Scala with Cats ͱ͍͏ຊͷΛ͠·͢ Cats Λμγʹͯؔ͠ܕͷߟ͑ํΛֶͿຊ Cats ʜ Scala
ͰΰϦΰϦؔܕ͢ΔͷΛิॿ͢ΔϥΠϒϥϦ Cats ͷ͍ํΛֶͿຊ
͜͜ʹ͋Γ·͢ Figure: https://underscore.io/books/scala-with-cats/
ಡΜͩܦҢ ͓͠͝ͱͰ Scala ͷϨϏϡʔΛ͠ͳ͍ͱ͍͚ͳ͍ Scala Βͳ͍ʂ ݍษڧ͚ͯͨ͠Ͳ Monad ͕ग़ͯ͘Δલʹ͖ͯΊͨ Monad
Βͳ͍ʂ ྆ํ·ͱΊͯษڧͰ͖ͳ͍͔ͳʁ
ຊͷষཱͯ Monoids and Semigroups Functors Monads Monad Transformers Semigroupal and
Applicative Foldable and Traverse Testing Asynchronous Code Map-Reduce Data Validation CRDTs ײ ාͦ͏
ಡΜͰΈͨײ ͋·Γා͘ͳ͍ Option, Future, List ͳͲɼScala ͰΑ͘͏֓೦ΛΑ͘ݟ͢ͱ͜Ζ͔Βελʔτ ͦΕΒͷڞ௨ੑ࣭ΛऔΓग़͢͜ͱͰ Monad ͳͲͷந֓೦ঃʑʹ
࠷ۙ͋ͬͨ͜ͱ Javascript ͷ࣭Λ͞Εͨ Γ͍ͨ͜ͱɿ ʮ2 ͭͷ Promise ͷ݁Ռ͕ग़ଗ͔ͬͯΒɺ2 ͭͷ݁ՌΛՃͯ͠ฦ͢ʯ ฉ͍ͨॠؒʹʮݴޠͷ
built-in ͚ؔͩͰͰ͖ͦ͏ͩʯͱࢥͬͨ ௐͨΒ Promise.all() ͕ώοτͨ͠
ਪաఔ ܕΫϥε 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 ʹݟ͑Δͷଟۮવ
ݸਓతʹࢥ͍ͬͯΔ͜ͱ ؔܕͷߟ͑ํ͕ʮৗʹਖ਼͍͠ʯΘ͚ͳ͍ ͕ɼ ʮؔܕҎ֎ؔܕͷߟ͑ํ͕͑ͳ͍ʯͷ͔ʁ Ͳ͜·Ͱʢແཧͳ͘ʣ௨༻͢Δ͔ߟ͍͑ͨ ʢཧʣֶ͔Βٕज़ാʹೖͬͨࢲʹͱͬͯɼ ʮֶͬΆ͍ߟ͑ํ͕͑Δ͜ͱʯཧղΛ͛ Δ্Ͱେ͖ͳॿ͚ʹͳΔ
·ͱΊ Figure: Cats ͷΛ͠·ͨ͠ɽࣸਅ࣮ՈͷͶ͜Ͱ͢ɽ