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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Shohei Yasutake
December 16, 2015
Programming
580
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Haskell の型クラスと Typeclassopedia の紹介 #w8lt
Shohei Yasutake
December 16, 2015
More Decks by Shohei Yasutake
See All by Shohei Yasutake
Erlang 事例紹介: メディアストリーム中継システム
amutake
0
540
部屋のメトリクス可視化
amutake
0
810
Actario: A Framework for Reasoning About Actor Systems
amutake
0
890
Coqの紹介 #w8lt
amutake
0
390
🍣 #w8lt
amutake
2
580
代数的データ型について #w8lt
amutake
6
2.6k
Coq で証明付き Web アプリを作る #adf2015
amutake
2
950
FLL
amutake
1
1.5k
Other Decks in Programming
See All in Programming
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
370
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
740
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
440
「人を評価する AI」の設計と実装
ryoyanara
0
260
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
170
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
260
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
240
MySQLとPostgreSQLって何が違うの?
akagami
0
150
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
550
VibeCodingからAgenticWorkflowへ
starfish719
0
950
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
250
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
5
1.8k
Featured
See All Featured
We Are The Robots
honzajavorek
0
320
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
220
Why Our Code Smells
bkeepers
PRO
340
58k
Six Lessons from altMBA
skipperchong
29
4.5k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
480
Code Reviewing Like a Champion
maltzj
528
40k
The SEO identity crisis: Don't let AI make you average
varn
0
540
Amusing Abliteration
ianozsvald
1
270
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
390
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
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ͱ͍͏ओཁͳܕΫϥεͷղઆ هࣄΛհ͠·ͨ͠ ͱΓ͋͑ͣͬͯΈͯ׳ΕΔͷ͕͍͍ͱࢥ͍· ͢