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
Haskell の型クラスと Typeclassopedia の紹介 #w8lt
Search
Shohei Yasutake
December 16, 2015
Programming
0
520
Haskell の型クラスと Typeclassopedia の紹介 #w8lt
Shohei Yasutake
December 16, 2015
Tweet
Share
More Decks by Shohei Yasutake
See All by Shohei Yasutake
Erlang 事例紹介: メディアストリーム中継システム
amutake
0
460
部屋のメトリクス可視化
amutake
0
750
Actario: A Framework for Reasoning About Actor Systems
amutake
0
750
Coqの紹介 #w8lt
amutake
0
350
🍣 #w8lt
amutake
2
520
代数的データ型について #w8lt
amutake
6
2.4k
Coq で証明付き Web アプリを作る #adf2015
amutake
2
900
FLL
amutake
1
1.4k
Other Decks in Programming
See All in Programming
ユーザーにサブドメインの ECサイトを提供したい (あるいは) 2026年函館で一番熱くなるかもしれない言語の話
uvb_76
0
170
AI時代のリアーキテクチャ戦略 / Re-architecture Strategy in the AI Era
dachi023
0
190
TypeScript LSP の今までとこれから
quramy
0
110
コードに語らせよう――自己ドキュメント化が内包する楽しさについて / Let the Code Speak
nrslib
5
1k
AIにコードを生成するコードを作らせて、再現性を担保しよう! / Let AI generate code to ensure reproducibility
yamachu
7
6k
人には人それぞれのサービス層がある
shimabox
3
460
OpenNext + Hono on Cloudflare でイマドキWeb開発スタックを実現する
rokuosan
0
110
AI Coding Agent Enablement in TypeScript
yukukotani
17
7.2k
Proxmoxをまとめて管理できるコンソール作ってみました
karugamo
1
410
Blueskyのプラグインを作ってみた
hakkadaikon
1
280
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'"
philipschwarz
PRO
0
130
衛星の軌道をWeb地図上に表示する
sankichi92
0
250
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
620
BBQ
matthewcrist
88
9.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Raft: Consensus for Rubyists
vanstee
137
7k
Gamification - CAS2011
davidbonilla
81
5.3k
Become a Pro
speakerdeck
PRO
28
5.4k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
Designing for Performance
lara
608
69k
GitHub's CSS Performance
jonrohan
1031
460k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
Transcript
)BTLFMMͷܕΫϥεͱ 5ZQFDMBTTPQFEJBͷհ 8-5 !BNVUBLF@T
ܕΫϥε ܕʹڞ௨͢Δੑ࣭Λൈ͖ग़ͨ͠ͷ ΦϒδΣΫτࢦͷΫϥεͱҧ͏ͷͰҙ ܕΫϥε͍Ζ͍ΖͳݴޠͰ͑Δ ͜ͷεϥΠυͰ)BTLFMMΛ͏
ྫ &RΫϥεҙͷͭͷʹ͍͍͔ͭͯ͘͠͠ͳ ͍͔Θ͔Δ 0SEΫϥεҙͷͭͷʹ͍ͭͯॱংΛ͚ͭΒΕΔ 4IPXΫϥεจࣈྻʹมͰ͖Δ
ܕΫϥε *OU 'MPBU 3BUJPOBM %PVCMF
ܕΫϥε *OU 'MPBU 3BUJPOBM %PVCMF /VN 'MPBUJOH 'SBDUJPOBM ͋·Γ͍͍ྫ͡Όͳ͍͚Ͳ
ܕΫϥεͷఆٛ class Eq a => Ord a where compare ::
a -> a -> Ordering (<=) :: a -> a -> Bool (<) :: a -> a -> Bool ... ʮܕΫϥε0SEͱ͍͏໊લͰ͢ʯ ʮBͱ͍͏ܕ ม ʹ͍ͭͯҎԼͷ ؔΛ࣮͍ͯͩ͘͠͞ʯ ʮB͕&RͰ͋Δ͜ͱ Λཁٻ͠·͢ʯ ʮ͜ΕΒͷܕΛ࣋ͭؔ ϝιου Λ࣮͍ͯͩ͘͠͞ʯ NJOJNBMDPNQMFUFEFpOJUJPO͕͋Δ߹ͦΕ͚࣮ͩ͢Ε͍͍
Πϯελϯεએݴ instance Ord Bool where True <= False = False
_ <= _ = True ʮ#PPMܕΛ0SEͷΠϯελϯεʹ͠·͢ʯ ʮ ͱ͍͏ؔͷ࣮Ͱ͢ʯ ʮ0SEͷ.JOJNBMDPNQMFUFEFpOJUJPO DPNQBSF·ͨ ͳͷͰ͜ΕͰऴΘΓͰ͢ʯ
ܕΫϥεΛͬͨؔ sort :: Ord a => [a] -> [a] sort
= ... ʮ0SEͷੑ࣭Λ͏ͷͰɺܕมB 0SEͷΠϯελϯεͰͳ͚Ε͍͚·ͤΜɻ Ͱ0SEͰ͋ΕͲΜͳܕͰେৎʯ
ܕΫϥεͷخ͠͞ ࣗͰ࡞ͬͨܕΛͳʹ͔ͷܕΫϥεͷΠϯελϯεʹ͢Δ ˠͦͷܕΫϥεʹ͍ͭͯఆٛͯ͋͠Δ͕ؔλμͰ͑ ΔΑ͏ʹͳΔ ྫࣗ࡞ͷܕΛ.POBEͷΠϯελϯεʹ͢Δ Λ࣮͢Δ
ͱɺ$POUSPM.POBEϞδϡʔϧʹఆٛ͞ Ε͍ͯΔ͚ؔͩͰݸͷ͕ؔ͑ΔΑ͏ʹͳΔ Կ͔ͷܕΫϥεʹ͍ͭͯͷؔΛ࡞Δ ˠͦͷܕΫϥεͷΠϯελϯεʹͳ͍ͬͯΔͯ͢ͷܕ Ͱͦͷ͕ؔ͑ΔΑ͏ʹͳΔ CBTF
5ZQFDMBTTPQFEJBͱ )BTLFMMͷجຊతͳܕΫϥεͷղઆهࣄ )BTLFMMͰ͍Ζ͍ΖͳܕͱܕΫϥεʹ׳ΕΔ ͜ͱ͕ͱͯॏཁ IUUQTXJLJIBTLFMMPSH5ZQFDMBTTPQFEJB ܕΫϥεͷґଘؔ
հ͞Ε͍ͯΔܕΫϥε 'VODUPS "QQMJDBUJWF .POBE .POBE5SBOT .POBE'JY 4FNJHSPVQ .POPJE
'PMEBCMF 5SBWFSTBCMF $BUFHPSZ "SSPX $PNPOBE Ұ֮ͭ͑Δ͝ͱʹͰ͖Δ͜ͱ͕͕Δ 'VODUPS "QQMJDBUJWF .POBE .POBE5SBOT͘ Β͍·ͰΔͱ͍ͩͿ͍Ζ͍ΖͰ͖ΔΑ͏ʹͳΔ lThere is no royal road to Haskell.zͱ͍͏ϢʔΫ Ϧουͷ༗໊ͳݴ༿͕͋Δͬͯ5ZQFDMBTTPQFEJBʹॻ͍ͯΔ ࣌
ཧղͷͨΊͷ৺ߏ͑ ˞͜ΕΒݸਓతͳҙݟͰ͢ આ໌ΛಡΜͰ͏Μ͏ΜᄬΔΑΓͱΓ͍͋͑ͣΖ͍ΖͳΠϯε λϯεΛͬͯΈͯ׳ΕΔͷ͕Ұ൪͍͍ͱࢥ͏ .POBEͳͲͷΠϝʔδΛߟ͑͡ΊΔͱυπϘʹ·ΔՄ ೳੑ͕͋ΔͷͰɺܕͱίʔυ͚ͩΈͯߟ͑Δ
ܕΫϥεͷϝιου͚ͩݟΔΑΓݸʑͷΠϯελϯεͷఆٛ ΛΈͯߟ͑Δ 'VODUPS.POBEͨͩͷܕΫϥεɻগ͠ܕ͕ෳࡶͳͩ ͚Ͱ&R0SEͱಉ͡ ͏͚ͩͳΒݍΒͳͯ͘େৎ
༨ஊ ͖࣋ͭੑ࣭Λຬͨ͞ͳ͍Α͏ͳΠϯελϯε࡞ΕΔ ੑ࣭Λຬ͍ͨͯ͠Δ͜ͱΛલఏͱ͢Δ͕ؔյΕΔ ͦ͠ ͯؾ͖ͮʹ͍͘ ϞφυଇΛຬ͍ͨͯ͠ͳ͍Ϟφυͱ͔؆୯ʹ࡞ΕΔ
ੑ࣭Λຬ͍ͨͯ͠ͳ͍ͱΠϯελϯεΛ࡞Εͳ͍Α͏ʹͨ͠ ͍ ˠ$PRͱ͔*ESJTͱ͔͑Ͱ͖·͢ ϝιουͷܕͷͱ͜Ζʹ໋Λॻ͘ )BTLFMMͰͰ͖Δʁ ࠷ۙͷ()$ͷܕϨϕϧࣄΛ͋ ·ΓΒͳ͍
·ͱΊ ܕΫϥεͱ͍͏ػೳʹ͍ͭͯ؆୯ʹઆ໌͠·͠ ͨ 5ZQFDMBTTPQFEJBͱ͍͏ओཁͳܕΫϥεͷղઆ هࣄΛհ͠·ͨ͠ ͱΓ͋͑ͣͬͯΈͯ׳ΕΔͷ͕͍͍ͱࢥ͍· ͢