魔力Haskell

魔力Haskell
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2016-09
版次: 1
ISBN: 9787115432834
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 354页
正文语种: 简体中文
丛书: 图灵原创
66人买过
  • 本书是一本由浅入深的Haskell教程。书中首先介绍Haskell的基础语法和函数式编程的基本概念,以及GHC、GHCi、Cabal等工具的用法;接着按照函子→应用函子→单子的顺序介绍Haskell中核心的三大类型类,并以列表单子、Reader单子和State单子为例详细分析单子类型类的来龙去脉;后介绍Foldable和Traversable类型类、单子变换、GHC的语言扩展和程序标注,以及网络编程、数据库、并发并行、序列化/反序列化与泛型编程、异常处理等内容。 韩冬,北京理工大学07级毕业生,毕业后从事嵌入式开发,后投身互联网行业,曾任职百度、美团网高级前端工程师,现在在滴滴出行平台架构组从事架构开发工作。在工作中实践函数式编程,经验丰富。 目录



    第一部分 基础知识

    第1章 基本语法和GHCi 3

    1.1 注释 3

    1.2 表达式 3

    1.3 声明 4

    1.3.1 类型声明和绑定声明 4

    1.3.2 模块声明和导入声明 5

    1.4 函数 6

    1.5 GHCi 8

    1.6 初级函数 10

    第2章 data和模式匹配 13

    2.1 数据声明data 13

    2.2 模式匹配 14

    2.2.1 无处不在的模式匹配 15

    2.2.2 @pattern 16

    2.3 各式各样的数据类型 16

    2.3.1 多构造函数 16

    2.3.2 完备性检查 17

    2.3.3 无参数构造函数 18

    2.3.4 data与类型变量 18

    2.3.5 记录语法 20

    2.4 排版规则 22

    第3章 列表、递归和盒子比喻 23

    3.1 列表 23

    3.1.1 等差数列 24

    3.1.2 匹配列表 24

    3.2 递归操作 26

    3.3 盒子比喻 30

    第4章 元组、类型推断和高阶函数 34

    4.1 元组 34

    4.2 类型推断 35

    4.3 高阶函数 37

    4.3.1 拉链和zipWith 39

    4.3.2 柯里化 41

    第5章 常用的高阶函数和函数的补充

    语法 43

    5.1 应用函数$和  43

    5.2 匿名函数 44

    5.3 组合函数. 45

    5.4 函数的补充语法 46

    5.4.1 where 46

    5.4.2 guard 47

    5.4.3 MultiWayIf 49

    5.4.4 where与let 49

    5.5 Point free 49

    5.6 黑魔法词汇表 51

    第6章 常用的列表操作:映射、过滤、

    折叠和扫描 53

    6.1 映射 53

    6.2 过滤 54

    6.3 折叠 55

    6.4 扫描 57

    6.5 方向是相对的 60

    第7章 类型类 62

    7.1 实例声明 62

    7.2 类声明 65

    7.3 类型类的实现 66

    7.3.1 层级和约束 67

    7.3.2 推导类型类 68

    7.3.3 Show/Read 69

    第8章 数字相关的类型类 71

    8.1 顺序类 71

    8.2 data和类型约束 72

    8.3 枚举类 73

    8.4 边界类 75

    8.5 数字类 76

    第9章 type、newtype和惰性求值 80

    9.1 类型别名type 80

    9.2 新类型声明newtype 81

    9.3 惰性求值 84

    9.3.1 标记语义、常态和弱常态 87

    9.3.2 seq和deepseq 90

    第10章 模块语法以及cabal、Haddock

    工具 94

    10.1 模块语法 94

    10.2 使用cabal 96

    10.2.1 使用cabal安装依赖 96

    10.2.2 项目的cabal配置 98

    10.3 Haddock 101

    第二部分 重要的类型和类型类

    第11章 函子 107

    11.1 容器抽象 107

    11.2 范畴 110

    11.3 Identity和Const 115

    11.4 IO函子 117

    第12章 透镜组 118

    12.1 getter和setter 118

    12.2 透镜组 120

    12.3 view、set和over函数 122

    12.3.1 over函数 122

    12.3.2 set函数 124

    12.3.3 view函数 125

    12.4 函数库 128

    第13章 应用函子 129

    13.1 函子的局限 129

    13.2 什么是函子 133

    13.2.1 Reader应用函子 134

    13.2.2 自然升格 135

    13.3 IO应用函子 138

    第14章 单位半群和一些有趣的应用

    函子 139

    14.1 单位半群 139

    14.1.1 Endo单位半群 141

    14.1.2 自由单位半群 142

    14.1.3 逆 144

    14.2 当单位半群遇上应用函子 145

    14.2.1 Const a的应用函子实例 145

    14.2.2 选择应用函子 146

    14.2.3 拉链应用函子 147

    第15章 解析器 149

    15.1 参数解析 149

    15.2 optparse-applicative 151

    15.3 选择解析 153

    第16章 单子 158

    16.1 应用函子的局限 158

    16.2 什么是单子 159

    16.2.1 粘合函数 161

    16.2.2 do语法糖 163

    16.3 IO单子 165

    第17章 八皇后问题和列表单子 168

    17.1 列表单子与数组归纳 168

    17.2 八皇后问题 169

    17.3 MonadPlus 171

    17.4 结构控制函数 173

    17.4.1 sequence/sequence_ 173

    17.4.2 mapM/mapM_ 174

    17.4.3 replicateM/replicateM_ 175

    17.4.4 forever 176

    17.4.5 filterM 176

    17.4.6 foldM/foldM_ 177

    第18章 Reader单子 179

    18.1 (-》)a的单子实例声明 179

    18.2 模板渲染 180

    18.3 Reader新类型 185

    第19章 State单子 187

    19.1 什么是State单子 187

    19.2 随机数 192

    19.3 简易计算器 195

    第20章 IO和它的伙伴们 197

    20.1 IO单子的本质 197

    20.2 基本IO操作 199

    20.3 IO中的变量 202

    20.4 forkIO 203

    20.5 ST单子 204

    20.6 后门函数 206

    第三部分 高级类型类和项目实践

    第21章 语言扩展和程序标注 211

    21.1 语言扩展 211

    21.2 严格求值数据项 214

    21.3 惰性模式 214

    21.4 程序标注 215

    21.5 编译选项 217

    21.6 运行分析 218

    第22章 Foldable和Traversable 221

    22.1 Foldable 221

    22.2 折叠与单位半群 224

    22.3 Traversable 226

    22.4 推导规则 230

    22.5 Data.Coerce 231

    第23章 列表、数组和散列表 233

    23.1 列表 233

    23.2 数组 236

    23.3 散列表 242

    第24章 单子变换 245

    24.1 Kleisli范畴 245

    24.2 ReaderT 246

    24.3 Identity和IdentityT 248

    24.4 StateT 250

    24.5 RandT 253

    第25章 单子变换的升格操作 256

    25.1 MonadIO 258

    25.2 MonadState和MonadReader 258

    25.3 类型家族 260

    25.4 Lazy StateT和Strict StateT 262

    25.5 Writer单子 263

    第26章 高效字符串处理 266

    26.1 bytestring函数库 266

    26.1.1 Lazy ByteString 267

    26.1.2 ByteString Builder 268

    26.2 text和utf8-string函数库 272

    26.3 mono-traversable函数库 274

    第27章 网络编程 276

    27.1 wai/warp 276

    27.2 wai-extra 279

    27.3 HTTP的单子抽象 280

    27.4 WebSocket编程 281

    27.5 Socket编程 283

    第28章 Haskell与数据库 286

    28.1 persistent 286

    28.2 esqueleto 292

    第29章 模板编程 296

    29.1 什么是模板 296

    29.2 Q单子 299

    29.3 拼接 301

    29.4 reify 303

    第30章 并发和并行编程 306

    30.1 运行时工作原理 306

    30.2 并行编程 308

    30.3 并发编程 310

    30.3.1 MVar 311

    30.3.2 STM 314

    30.3.3 aysnc 316

    第31章 高级类型编程 317

    31.1 Typeable和Dynamic 317

    31.2 存在类型 320

    31.3 类型家族、数据家族和GADT 321

    31.3.1 类型家族 321

    31.3.2 数据家族 324

    31.3.3 GADT 325

    31.4 数据类别DataKinds 327

    第32章 序列化/反序列化与泛型编程 331

    32.1 aeson函数库 331

    32.1.1 使用模板编程自动生成ToJSON/FromJSON实例 334

    32.1.2 使用泛型提供的ToJSON/FromJSON 335

    32.2 泛型 336

    第33章 Haskell中的异常处理 342

    33.1 使用Either/Maybe表示异常 342

    33.2 运行时异常 343

    33.2.1 异步异常 346

    33.2.2 资源的清理和释放 348

    33.3 纯函数中的异常处理 349

    33.4 异常和单子变换 350

    33.4.1 exceptions 350

    33.4.2 monad-control 351

    33.5 常见的异常处理问题 353
  • 内容简介:
    本书是一本由浅入深的Haskell教程。书中首先介绍Haskell的基础语法和函数式编程的基本概念,以及GHC、GHCi、Cabal等工具的用法;接着按照函子→应用函子→单子的顺序介绍Haskell中核心的三大类型类,并以列表单子、Reader单子和State单子为例详细分析单子类型类的来龙去脉;后介绍Foldable和Traversable类型类、单子变换、GHC的语言扩展和程序标注,以及网络编程、数据库、并发并行、序列化/反序列化与泛型编程、异常处理等内容。
  • 作者简介:
    韩冬,北京理工大学07级毕业生,毕业后从事嵌入式开发,后投身互联网行业,曾任职百度、美团网高级前端工程师,现在在滴滴出行平台架构组从事架构开发工作。在工作中实践函数式编程,经验丰富。
  • 目录:
    目录



    第一部分 基础知识

    第1章 基本语法和GHCi 3

    1.1 注释 3

    1.2 表达式 3

    1.3 声明 4

    1.3.1 类型声明和绑定声明 4

    1.3.2 模块声明和导入声明 5

    1.4 函数 6

    1.5 GHCi 8

    1.6 初级函数 10

    第2章 data和模式匹配 13

    2.1 数据声明data 13

    2.2 模式匹配 14

    2.2.1 无处不在的模式匹配 15

    2.2.2 @pattern 16

    2.3 各式各样的数据类型 16

    2.3.1 多构造函数 16

    2.3.2 完备性检查 17

    2.3.3 无参数构造函数 18

    2.3.4 data与类型变量 18

    2.3.5 记录语法 20

    2.4 排版规则 22

    第3章 列表、递归和盒子比喻 23

    3.1 列表 23

    3.1.1 等差数列 24

    3.1.2 匹配列表 24

    3.2 递归操作 26

    3.3 盒子比喻 30

    第4章 元组、类型推断和高阶函数 34

    4.1 元组 34

    4.2 类型推断 35

    4.3 高阶函数 37

    4.3.1 拉链和zipWith 39

    4.3.2 柯里化 41

    第5章 常用的高阶函数和函数的补充

    语法 43

    5.1 应用函数$和  43

    5.2 匿名函数 44

    5.3 组合函数. 45

    5.4 函数的补充语法 46

    5.4.1 where 46

    5.4.2 guard 47

    5.4.3 MultiWayIf 49

    5.4.4 where与let 49

    5.5 Point free 49

    5.6 黑魔法词汇表 51

    第6章 常用的列表操作:映射、过滤、

    折叠和扫描 53

    6.1 映射 53

    6.2 过滤 54

    6.3 折叠 55

    6.4 扫描 57

    6.5 方向是相对的 60

    第7章 类型类 62

    7.1 实例声明 62

    7.2 类声明 65

    7.3 类型类的实现 66

    7.3.1 层级和约束 67

    7.3.2 推导类型类 68

    7.3.3 Show/Read 69

    第8章 数字相关的类型类 71

    8.1 顺序类 71

    8.2 data和类型约束 72

    8.3 枚举类 73

    8.4 边界类 75

    8.5 数字类 76

    第9章 type、newtype和惰性求值 80

    9.1 类型别名type 80

    9.2 新类型声明newtype 81

    9.3 惰性求值 84

    9.3.1 标记语义、常态和弱常态 87

    9.3.2 seq和deepseq 90

    第10章 模块语法以及cabal、Haddock

    工具 94

    10.1 模块语法 94

    10.2 使用cabal 96

    10.2.1 使用cabal安装依赖 96

    10.2.2 项目的cabal配置 98

    10.3 Haddock 101

    第二部分 重要的类型和类型类

    第11章 函子 107

    11.1 容器抽象 107

    11.2 范畴 110

    11.3 Identity和Const 115

    11.4 IO函子 117

    第12章 透镜组 118

    12.1 getter和setter 118

    12.2 透镜组 120

    12.3 view、set和over函数 122

    12.3.1 over函数 122

    12.3.2 set函数 124

    12.3.3 view函数 125

    12.4 函数库 128

    第13章 应用函子 129

    13.1 函子的局限 129

    13.2 什么是函子 133

    13.2.1 Reader应用函子 134

    13.2.2 自然升格 135

    13.3 IO应用函子 138

    第14章 单位半群和一些有趣的应用

    函子 139

    14.1 单位半群 139

    14.1.1 Endo单位半群 141

    14.1.2 自由单位半群 142

    14.1.3 逆 144

    14.2 当单位半群遇上应用函子 145

    14.2.1 Const a的应用函子实例 145

    14.2.2 选择应用函子 146

    14.2.3 拉链应用函子 147

    第15章 解析器 149

    15.1 参数解析 149

    15.2 optparse-applicative 151

    15.3 选择解析 153

    第16章 单子 158

    16.1 应用函子的局限 158

    16.2 什么是单子 159

    16.2.1 粘合函数 161

    16.2.2 do语法糖 163

    16.3 IO单子 165

    第17章 八皇后问题和列表单子 168

    17.1 列表单子与数组归纳 168

    17.2 八皇后问题 169

    17.3 MonadPlus 171

    17.4 结构控制函数 173

    17.4.1 sequence/sequence_ 173

    17.4.2 mapM/mapM_ 174

    17.4.3 replicateM/replicateM_ 175

    17.4.4 forever 176

    17.4.5 filterM 176

    17.4.6 foldM/foldM_ 177

    第18章 Reader单子 179

    18.1 (-》)a的单子实例声明 179

    18.2 模板渲染 180

    18.3 Reader新类型 185

    第19章 State单子 187

    19.1 什么是State单子 187

    19.2 随机数 192

    19.3 简易计算器 195

    第20章 IO和它的伙伴们 197

    20.1 IO单子的本质 197

    20.2 基本IO操作 199

    20.3 IO中的变量 202

    20.4 forkIO 203

    20.5 ST单子 204

    20.6 后门函数 206

    第三部分 高级类型类和项目实践

    第21章 语言扩展和程序标注 211

    21.1 语言扩展 211

    21.2 严格求值数据项 214

    21.3 惰性模式 214

    21.4 程序标注 215

    21.5 编译选项 217

    21.6 运行分析 218

    第22章 Foldable和Traversable 221

    22.1 Foldable 221

    22.2 折叠与单位半群 224

    22.3 Traversable 226

    22.4 推导规则 230

    22.5 Data.Coerce 231

    第23章 列表、数组和散列表 233

    23.1 列表 233

    23.2 数组 236

    23.3 散列表 242

    第24章 单子变换 245

    24.1 Kleisli范畴 245

    24.2 ReaderT 246

    24.3 Identity和IdentityT 248

    24.4 StateT 250

    24.5 RandT 253

    第25章 单子变换的升格操作 256

    25.1 MonadIO 258

    25.2 MonadState和MonadReader 258

    25.3 类型家族 260

    25.4 Lazy StateT和Strict StateT 262

    25.5 Writer单子 263

    第26章 高效字符串处理 266

    26.1 bytestring函数库 266

    26.1.1 Lazy ByteString 267

    26.1.2 ByteString Builder 268

    26.2 text和utf8-string函数库 272

    26.3 mono-traversable函数库 274

    第27章 网络编程 276

    27.1 wai/warp 276

    27.2 wai-extra 279

    27.3 HTTP的单子抽象 280

    27.4 WebSocket编程 281

    27.5 Socket编程 283

    第28章 Haskell与数据库 286

    28.1 persistent 286

    28.2 esqueleto 292

    第29章 模板编程 296

    29.1 什么是模板 296

    29.2 Q单子 299

    29.3 拼接 301

    29.4 reify 303

    第30章 并发和并行编程 306

    30.1 运行时工作原理 306

    30.2 并行编程 308

    30.3 并发编程 310

    30.3.1 MVar 311

    30.3.2 STM 314

    30.3.3 aysnc 316

    第31章 高级类型编程 317

    31.1 Typeable和Dynamic 317

    31.2 存在类型 320

    31.3 类型家族、数据家族和GADT 321

    31.3.1 类型家族 321

    31.3.2 数据家族 324

    31.3.3 GADT 325

    31.4 数据类别DataKinds 327

    第32章 序列化/反序列化与泛型编程 331

    32.1 aeson函数库 331

    32.1.1 使用模板编程自动生成ToJSON/FromJSON实例 334

    32.1.2 使用泛型提供的ToJSON/FromJSON 335

    32.2 泛型 336

    第33章 Haskell中的异常处理 342

    33.1 使用Either/Maybe表示异常 342

    33.2 运行时异常 343

    33.2.1 异步异常 346

    33.2.2 资源的清理和释放 348

    33.3 纯函数中的异常处理 349

    33.4 异常和单子变换 350

    33.4.1 exceptions 350

    33.4.2 monad-control 351

    33.5 常见的异常处理问题 353
查看详情
系列丛书 / 更多
魔力Haskell
第一行代码:Android
郭霖 著
魔力Haskell
啊哈!算法
啊哈磊 著
魔力Haskell
推荐系统实践
项亮 著
魔力Haskell
深入浅出Node.js
朴灵 著
魔力Haskell
SEO教程:搜索引擎优化入门与进阶(第3版)
吴泽欣 著
魔力Haskell
Unity 3D游戏开发
宣雨松 著
魔力Haskell
Go语言编程
许式伟 著
魔力Haskell
iOS开发指南 从零基础到App Store上架(第3版)
关东升 著
魔力Haskell
JavaScript设计模式与开发实践
曾探 著
魔力Haskell
腾云:—云计算和大数据时代网络技术揭秘
徐立冰 著
魔力Haskell
深入React技术栈
陈屹 著
魔力Haskell
Docker 容器与容器云(第2版)
浙江大学SEL实验室 著
相关图书 / 更多
魔力Haskell
魔力宝贝[总第八辑·上、下]
马舒建 著
魔力Haskell
魔力语文学院提升口语交际能力的36个闯关故事(全三册)
何捷 著
魔力Haskell
魔力语文学院提升作文能力的36个闯关故事(全三册)
何捷 著
魔力Haskell
魔力仙子
崔钟雷 主编
魔力Haskell
魔力宝贝(总第五辑·上、下册)
马舒建 编著
魔力Haskell
魔力思维课/张丹丹的幼小衔接亲子课·爱上幼小衔接
张丹丹 著;张丹丹 编
魔力Haskell
魔力汉字
陈曼江;周紫畅
魔力Haskell
魔力语文学院 提升阅读能力的36个闯关故事(全三册)
何捷
魔力Haskell
魔力数学
史蒂夫.韦、费利西娅.劳 著
您可能感兴趣 / 更多
魔力Haskell
ASP.NET Core 5.0开发入门与实战
韩冬 张安忠 碌云 王泽威 著
魔力Haskell
内蒙古导游讲解实务:思维、方法与示例
韩冬 著
魔力Haskell
阻性板气体探测器:设计,性能及应用
韩冬 译;[俄]伏拉基米尔·佩斯科夫;[葡萄牙]著.王义(保罗·丰特);李元景
魔力Haskell
电路原理
韩冬 著
魔力Haskell
交易王牌
韩冬 著
魔力Haskell
最爱钢琴C大调浪漫情调篇
韩冬 著
魔力Haskell
经典儿童钢琴趣味弹唱
韩冬 著
魔力Haskell
控心术:读懂《孙子兵法》,看透身边人
韩冬 著
魔力Haskell
王侯将相,宁有种乎(全民笑读《史记》)
韩冬 著
魔力Haskell
书籍装帧设计(于瀛)
韩冬 主编;于瀛
魔力Haskell
Q版史记
韩冬 著
魔力Haskell
玩转三十六计
韩冬 著