在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 《What I Wish I Knew When Learning Haskell》

《What I Wish I Knew When Learning Haskell》

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:1.06M
  • 下载次数:2
  • 浏览次数:62
  • 发布时间:2023-01-16
  • 实例类别:一般编程问题
  • 发 布 人:老刘
  • 文件格式:.pdf
  • 所需积分:0
 相关标签:

实例介绍

【实例简介】《What I Wish I Knew When Learning Haskell》

【实例截图】

【核心代码】

Contents
Basics 11
Cabal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Hackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
GHCi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Editor Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Bottoms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Exhaustiveness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Stacktraces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Type Holes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Deferred Type Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
ghcid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Haddock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Monads 30
Eightfold Path to Monad Satori . . . . . . . . . . . . . . . . . . . . . . 30
Monadic Myths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Laws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Do Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Maybe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Whats the point? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Reader Monad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Writer Monad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
State Monad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Monad Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Monad Transformers 41
mtl / transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
ReaderT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Newtype Deriving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Monad Morphisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Language Extensions 49
The Benign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
The Dangerous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Type Inference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1
Monomorphism Restriction . . . . . . . . . . . . . . . . . . . . . . . . 51
Extended Defaulting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Safe Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Partial Type Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Recursive Do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Applicative Do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Pattern Guards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
ViewPatterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
TupleSections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
MultiWayIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
EmptyCase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
LambdaCase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
NumDecimals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
PackageImports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
RecordWildCards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
NamedFieldPuns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
PatternSynonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
DeriveTraversable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
DeriveFoldable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
DeriveFunctor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
DeriveGeneric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
DeriveAnyClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
StaticPointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
DuplicateRecordFields . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
OverloadedLabels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Historical Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Type Classes 63
Minimal Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
FlexibleInstances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
FlexibleContexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
OverlappingInstances . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
IncoherentInstances . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
TypeSynonymInstances . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Laziness 67
Strictness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Seq and WHNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Strictness Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Strict Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Deepseq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Irrefutable Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Prelude 74
What to Avoid? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2
What Should be in Base . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Custom Preludes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Partial Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Safe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Boolean Blindness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Foldable / Traversable . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Corecursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
monad-loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Strings 83
String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Import Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Text.Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
ByteString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Overloaded Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
String Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Applicatives 88
Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Arrows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Bifunctors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Polyvariadic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Error Handling 94
Control.Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
ExceptT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
spoon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Advanced Monads 98
Function Monad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
RWS Monad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Cont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
MonadPlus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
MonadFix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
ST Monad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Free Monads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Indexed Monads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
lifted-base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Quantification 111
Universal Quantification . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Free theorems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3
Type Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Rank-N Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Existential Quantification . . . . . . . . . . . . . . . . . . . . . . . . . 115
Impredicative Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Scoped Type Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
GADTs 119
GADTs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Kind Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Phantom Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Typelevel Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Interpreters 125
HOAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
PHOAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Final Interpreters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Finally Tagless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
F-Algebras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
recursion-schemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Hint and Mueval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Testing 139
QuickCheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
SmallCheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
QuickSpec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Criterion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Tasty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
silently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Type Families 149
MultiParam Typeclasses . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Type Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Injectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Monotraversable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
NonEmpty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Overloaded Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Manual Proofs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Constraint Kinds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
TypeFamilyDependencies . . . . . . . . . . . . . . . . . . . . . . . . . 163
Promotion 163
Higher Kinded Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Kind Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
4
Data Kinds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Size-Indexed Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Typelevel Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Typelevel Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Custom Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Type Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Promoted Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Singleton Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Closed Type Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Kind Indexed Type Families . . . . . . . . . . . . . . . . . . . . . . . . 180
Promoted Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
HLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Typelevel Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Advanced Proofs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Liquid Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Generics 193
Typeable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Syb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Generic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Generic Deriving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Uniplate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Mathematics 210
Numeric Tower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Scientific . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Constructive Reals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
SAT Solvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
SMT Solvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Data Structures 217
Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Mutable Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Unordered-Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Hashtables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Graph Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
5
DList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
FFI 228
Pure Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Storable Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Function Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Concurrency 232
Sparks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Threadscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
STM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Monad Par . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
async . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Graphics 242
Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Parsing 243
Parsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Custom Lexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Simple Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Generic Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Attoparsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Optparse Applicative . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Happy & Alex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Configurator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Streaming 260
Lazy IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Safe Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Conduits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Data Formats 265
JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Yaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Network & Web Programming 276
HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Blaze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Warp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Scotty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Hastache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
6
Databases 281
Postgres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Acid State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
GHC 288
Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Inliner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Specialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Static Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Unboxed Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
IO/ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
ghc-heap-view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
STG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Worker/Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Z-Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Cmm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Optimization Hacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Interface Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Profiling 319
EKG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
RTS Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Languages 322
unbound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
unbound-generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
llvm-general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
pretty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
wl-pprint-text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Haskeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Repline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Template Haskell 333
Perils of Metaprogramming . . . . . . . . . . . . . . . . . . . . . . . . 333
Quasiquotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
language-c-quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Template Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Antiquotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Templated Type Families . . . . . . . . . . . . . . . . . . . . . . . . . 347
Templated Type Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 350
Multiline Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
git-embed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
7
Categories 353
Algebraic Relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Isomorphisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Duality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Functors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Natural Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Yoneda Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Kleisli Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Other Languages 360
Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
OCaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Standard ML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Agda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Coq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Idris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Rust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Purescript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Elm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Julia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Erlang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Clojure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Swift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Go . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Scala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Code 367

标签:

实例下载地址

《What I Wish I Knew When Learning Haskell》

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警