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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
cedretaber
May 15, 2017
Programming
2
930
猫とたはむれる
ScalaのFP用ライブラリ cats の紹介です。
cedretaber
May 15, 2017
Tweet
Share
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
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
110
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.1k
Understanding Apache Lucene - More than just full-text search
spinscale
0
110
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
430
Claude Code Skill入門
mayahoney
0
330
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
240
AHC061解説
shun_pi
0
370
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
320
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
230
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
940
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
730
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
570
Featured
See All Featured
Marketing to machines
jonoalderson
1
5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
190
Rails Girls Zürich Keynote
gr2m
96
14k
Producing Creativity
orderedlist
PRO
348
40k
Navigating Weather and Climate Data
rabernat
0
140
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
170
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
780
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