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
530
Haskell の型クラスと Typeclassopedia の紹介 #w8lt
Shohei Yasutake
December 16, 2015
Tweet
Share
More Decks by Shohei Yasutake
See All by Shohei Yasutake
Erlang 事例紹介: メディアストリーム中継システム
amutake
0
470
部屋のメトリクス可視化
amutake
0
750
Actario: A Framework for Reasoning About Actor Systems
amutake
0
760
Coqの紹介 #w8lt
amutake
0
350
🍣 #w8lt
amutake
2
520
代数的データ型について #w8lt
amutake
6
2.4k
Coq で証明付き Web アプリを作る #adf2015
amutake
2
910
FLL
amutake
1
1.4k
Other Decks in Programming
See All in Programming
XP, Testing and ninja testing
m_seki
2
150
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
140
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
490
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
240
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
4
520
VS Code Update for GitHub Copilot
74th
1
170
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
3
940
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
150
ktr0731/go-mcpでMCPサーバー作ってみた
takak2166
0
170
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
130
生成AIで日々のエラー調査を進めたい
yuyaabo
0
630
GraphRAGの仕組みまるわかり
tosuri13
7
470
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
The Language of Interfaces
destraynor
158
25k
4 Signs Your Business is Dying
shpigford
184
22k
Gamification - CAS2011
davidbonilla
81
5.3k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
We Have a Design System, Now What?
morganepeng
53
7.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Being A Developer After 40
akosma
90
590k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
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ͱ͍͏ओཁͳܕΫϥεͷղઆ هࣄΛհ͠·ͨ͠ ͱΓ͋͑ͣͬͯΈͯ׳ΕΔͷ͕͍͍ͱࢥ͍· ͢