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
猫とたはむれる
Search
cedretaber
May 15, 2017
Programming
940
2
Share
猫とたはむれる
ScalaのFP用ライブラリ cats の紹介です。
cedretaber
May 15, 2017
More Decks by cedretaber
See All by cedretaber
関数型初心者におすすめしたい "OCaml"
cedretaber
1
1k
3ヶ月間Scalaと付き 合って感じた事 ……という発表を想定していたのですが
cedretaber
3
3.2k
Other Decks in Programming
See All in Programming
tRPCの概要と少しだけパフォーマンス
misoton665
2
210
Claude Codeをカスタムして自分だけのClaude Codeを作ろう
terisuke
0
140
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
370
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
970
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
250
AI-DLC Deep Dive
yuukiyo
9
4.2k
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
280
The Less-Told Story of Socket Timeouts
coe401_
3
320
Offline should be the norm: building local-first apps with CRDTs & Kotlin Multiplatform
renaudmathieu
0
220
AWSコミュニティ活動は顧客のクラウド推進に効くのか / Do AWS community activities help customers adopt the cloud?
seike460
PRO
0
140
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
180
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
550
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
190
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
The Language of Interfaces
destraynor
162
26k
The Spectacular Lies of Maps
axbom
PRO
1
700
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
490
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
280
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.5k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
320
Facilitating Awesome Meetings
lara
57
6.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Agile that works and the tools we love
rasmusluckow
331
21k
Transcript
ೣͱͨΉΕΔ @cedretaber
Twitter / Github @cedretaber ͓ࣄ Scala TypeScript झຯ Ruby Erlang
/ Elixir F# Dݴޠ
cats ࠓճ͝հ͢Δͷtypelevel / cats 4DBMBͰ'1Λߦ͏ҝͷϥΠϒϥϦ 4DBMB[ͱ͔ͷϑϨϯζ
Why cats? ͍͍͢σʔλܕ͕ ἧ͍ͬͯΔ 4DBMBඪ४ͷσʔλܕʹ ศརͳؔΛೖ͠ ͯ͘ΕΔ ιʔε͕ಡΈ͘͢ݟ ָ͍͍ͯͯ͠
NonEmptyList
ʮઈରʹۭ͡Όͳ͍ࣄ͕อূ͞ΕͨʯϦετɻ ʮ͜͜Ͱͬͯ͘ΔϦετۭ͡Όͳ͍ʯͬͯ࣌ʹ ͏ɻ
None
Ϧετͱͷ૬ޓม /PO&NQUZ-JTUΛ͍͍ͨ໘-JTUΛ͍͍ͨ ໘ʹแؚ͞Ε͍ͯΔͣͳͷͰɺϦετͱͷ૬ޓม ଟ༻͢Δɻ
None
ͦͷଞͷϝιου /PO&NQUZ-JTUී௨ͷϦετͷϝιου͕֓Ͷ࣮ ͞Ε͍ͯΔɻ ·ͨɺ4FNJHSPVQ,ɺ5SBWFSTFɺ.POBEͳͲͷΠ ϯελϯεͳͷͰɺศརͳϝιουଟ͑͘Δ ʢۭͷঢ়ଶ͕ଘࡏ͠ͳ͍ͨΊɺϞϊΠυͰͳ͘ ܈ͳͷͰҙɻʣ
None
None
None
ه NonEmptyVector NonEmptyStream ͋Δɻ
Validated
ʮ-FGUΛੵ͢Δ&JUIFSʯ ໊લͷ௨ΓɺόϦσʔγϣϯΛ͔͚Δ࣌ʹॏๅ͢ Δɻ
ྫ ϢʔβొͷॲཧΛߟ͑Δɻ Ϣʔβ*%ॏෳෆՄɺύεϫʔυจࣈҎ্ɺΈ ͍ͨͳͷ͕݅͋Δͱ͢Δɻ
None
͜ͷ࣮ͩͱɺ*%ͱύεϫʔυͷ྆ํʹ͕͋Δ ߹*%ͷΤϥʔ͔͠ฦΒͳ͍ɻ όϦσʔγϣϯΛߦ͏߹ɺೖྗʹଘࡏ͢Δશͯͷ ϛεΛฦ͢ํ͕Ϣʔβʹ༏͍͠ɻ ͳͷͰɺ7BMJEBUFEΛ͏ɻ
None
None
/PO&NQUZ-JTUͱͷซ༻ ઌड़ͷྫͩͱ4USJOHΛͬͯΤϥʔΛੵ͕ͨ͠ɺ จࣈྻΛͪ͝Όͪ͝Όͱଓͯ͠͠·͏ͷ͋·Γ ៉ྷͳΓํͱݴ͑ͳ͍ɻ ͳͷͰɺ/PO&NQUZ-JTUΛͬͯੵͯ͠ΈΔɻ
Ͳ͏ͯ͠/PO&NQUZ-JTUͳͷ͔ʁ ผʹ௨ৗͷ-JTUͰྑ͍ͷ͕ͩɺ7BMJEBUFEͷ߹ɺ *OWBMJEʹͳΔ࣌ԿΒ͔ͷ͕ೖ͍ͬͯΔͣͳͷ Ͱɺ*OWBMJE͔ͭத͕ۭͱ͍͏ࣄ͋Γ͑ͳ͍ɻ ͳͷͰɺ/PO&NQUZ-JTUͷํ͕૬Ԡ͍͠ɻ
None
7BMJEBUFE /PO&NQUZ-JTUͷΈ߹Θͤඇৗʹ Α͘͏ͷͰɺDBUTʹ*OWBMJEΛ/PO&NQUZ-JTU ͱఆͨ͠7BMJEBUFE/FMͱ͍͏ܕ͕༧Ί༻ҙ͞Ε ͍ͯΔɻ ˣఆٛ
None
ه ʮਖ਼͍͠Λฦͭͭ͠ɺ ్தܦաͷԿ͔ੵ ͍ͨ͠ʯͱ͍͏߹ Iorͱ͍͏σʔλܕ͕ ͑Δɻ
List, Either
҉ͷมΛར༻ͯ͠ɺDBUTطଘͷΫϥεʹ৭ʑ ͳϝιουΛੜͯ͘͠ΕΔɻ ಛʹɺ-JTU&JUIFSͷ֦ு͕ศརɻ 5SBWFSTF'PMEBCMFͲ͜·Ͱศརɻ YҎલͳΒ&JUIFSʹNBQqBU.BQΛੜͯ͠ ͘ΕΔͷศརɻ
None
None
None
None
None
None
6OBQQMZʹ͍ͭͯ ্Ͱ&JUIFS7BMJEBUFEͷ-JTUʹTFRVFODF USBWFSTFΛద༻͍ͯ͠ΔͷΛݟͯɺٙʹײͨ͡ํ ଟ͍ͩΖ͏ɻ ͱ͍͏ͷɺ෦ద༻͞ΕͨܕҾΛਪͰ͖ͳ͍ ͱ͍͏ʢ4*ʣ༗໊ͰɺͦΕʹରԠ͢Δ ͨΊʹDBUT6OBQQMZΛ͍͔ͬͯͨΒͩɻ
None
͔͜͠͠ͷఔલʹղܾ͞Ε͓ͯΓɺ 4DBMB͔Βܕਪ͕վળ͞Ε͍ͯΔɻ ·ͨچόʔδϣϯͷ4DBMBͰɺTCUͷϓϥάΠϯΛ ͏ࣄͰಉͷػೳΛར༻Ͱ͖Δɻ ͜ΕΛड͚ͯDBUTͰɺٞͷɺ6OBQQMZͷར ༻Λίʔυ͔Βഉআ͢Δࣄʹͨ͠Β͍͠ɻ
ऴΘΓʹ
DBUTTDBMB[ʹ༻ҙ͞ΕͨศརͳؔΛ͏ͱɺ ͍͜͠ॲཧΛεοΩϦͱॻ͘ࣄ͕Ͱ͖Δɻ ಛʹUSBWFSTFTFRVFODFͳͲɺ࠶ؼؔ GPME-FGUΛۦͯ͠ॻ͜͏ͱ͢ΔͱͲ͏ͯ͠ෳࡶ ʹͳͬͯ͠·͏ɻ
ͨͩ͠ɺແҋʹ͍͍͑ͱ͍͏Θ͚Ͱͳ͍ͷͰ ҙɻ ݟ׳Εͳ͍ϝιουΛ͏ΑΓɺ࠶ؼؔͱ GPME-FGUͰॻ͍ͨํ͕ʢिؒޙͷࣗΛؚΊͨʣ ଞਓʹͱͬͯಡΈ͍͢ࣄ͋Δɻ ͦͷ͋ͨΓνʔϜͷͳͲݟͭͭௐ͍͖ͯ͠ ·͠ΐ͏ɻ
ࢀߟࢿྉ w UZQFMFWFMDBUT IUUQTHJUIVCDPNUZQFMFWFMDBUT w ೣ൪ IUUQFFETJODPNIFSEJOHDBUT