《Real World Haskell》内容脉络整理

p.s.  其实就是28–(6入门[1~4,6])-(10暂不用[17,20~28])=13网页啊!web

 

1~ 6 章: 语法入门 (类型,函数,表达式语法糖,typeclass)正则表达式

7~13章:  熟练/打好monad 基础! (I/O,文件; 数据结构;测试)数据库

14~19章 :  Monad。parse combinator 库,异常处理编程

20~28章:应用领域api

( 贯穿:Haskell 项目构建/test/build/package发布、API 查阅、设计等各类问题的理解…)数组


 🌑一:<Hello>网络

开发环境;GHCi;List;字符串;运算符数据结构

 

🌑二:<类型和函数>多线程

Haskell 的类型系统;List 和tuple并发

纯函数;递归函数;惰性求值(Lazy Evaluation)

多态函数(参数化多态:类型是参数)

 

🌑三:<自定义类型;几种表达式>

Algebric Data Type(代数数据类型?);模式匹配; Record Syntax; 

参数化类型;递归定义的类型

- - - - - - - - - 

〇 if~then~else~  ① let~in~  (局部变量)② where  ③case 模式匹配  ④ guard 

 

🌑四:<函数式的编程方式>

中缀函数; 

List 操做;

循环结构:fold,map,filter

Lambda 匿名函数

柯里化、函数组合

严格求值(Strict Evaluation) 与 seq

 

🌑五:<案例:编写 Json库>

包含:一个 Haskell 包的构建

 

🌑六:<typeclass 类型类>

熟悉几种内置的typeclass (Show/Read,Eq/Ord,Num) ; deriving

instance: 为自定义的类型注册typeclass

(使用typeclass 优化第5章的 Json)

 

 

🌑七:<I/O>

pure & I/O;

文件和handler;

惰性 I/O;

I/O Monad;

缓冲区;命令行参数;环境变量

 

八:<高效的文件处理;正则表达式;文件名匹配>

ByteString

正则表达式

 

九:<案例:I/O 项目写一个用于搜索文件的库>

(知识点很是多,而且会 预热 Monad)

 

十:<案例:解析二进制数据格式>

PGM 文件;

引入 Functor (函子)

用 Functor 重构代码

 

🌑十一:<代码测试>

QuickCheck

一个案例:测试数据、测试文档、测试统计

 

🌑十二:<案例:条形码识别>

条形码知识

引入 数组;

图像处理

 

🌑十三:<数据结构>

Map; 

差别列表;Monoid

通用序列

▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭▭

🌑十四:<Monads>

Maybe 链;隐式状态;

Monad 正式开始;Logger Monad;

共用 pure/ monadic 代码

Writer Monad;  Maybe Monad;  

do-notation;  list comprehension 2者做为语法糖

State Monad;

Monad Law

 

🌑十五:<使用 Monad 编程>

MonadPlus;  

随机数;分离接口与实现;

Reader Monad;

IO Monad

 

🌑十六:<库使用:Parsec— 一个parser combinator 库>

 

 

 

🌑十八:<Monad transformers>

动机:避免样板代码

 

🌑十九:<异常/错误处理>

 

 


 

十七:<FFI 机制:对接其余语言链接C 语言文件> (本章无中文翻译)

 

二十:<系统编程>

pipeline (管道)

与系统api 的接口

 

二十一:<数据库接口>

 

二十二:<案例:Web客户端开发>

一个 RSS 抓取器

 

二十三:<GUI编程使用gtk2hs>

 

二十四:<并发和多线程编程>

MapReduce

 

二十五:<性能剖析与优化>

 

 

 

二十六:<案例:高级库设计开发一个 Bloom Filter>

价值极高,综合运用所学知识!

(包括 Monad、设计良好的接口/模块、发布cabal 包)

 

二十七:<网络编程:Socket Syslog>

 

二十八:<软件事务内存STM>

 

 

 


 

案例性项目章节:

 第5章: 开发一个 Json

 第9章:开发一个搜索文件系统的库(使用 IO)

 第10章:解析二进制数据格式(如 PNG)—并为后面引入 Monad 准备

 第12章:条形码识别

 第22章:web 客户端

 第26章:高级库:Bloom Filter

_____________________________________

各类领域:

 第17章:对接其余语言

 第20章:系统底层接口

 第21章:数据库接口

 第22,27章:网络编程

 第23章:GUI 编程

 第24章:并发和多线程编程

相关文章
相关标签/搜索