《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章:併發和多線程編程

相關文章
相關標籤/搜索