截至2016年,中文圈內有沒有非常好的函數式編程語言講義?


安利一本我的新書《魔力Haskell》,此外我讀過那本LYAH的中文譯本,很不錯。

Edit: 目前我正錄製一套視頻,歡迎前去打賞:滴滴FP的愛頻道


最重要的2本使用Scheme的編程入門書,都出版過中文版。

相對淺一些的,《How to Design Programs》,程序設計方法(中文版) (豆瓣)
相對深一些的,《Structure and Interpretation of Computer Programs》計算機程序的構造和解釋 (豆瓣)


鄙校有haskell課程,不過基本上是面向沒學過haskell的,內容差不多就是haskell趣學指南。

不過豆瓣發現一本上世紀90年代的中文書。

這書大概已經絕版了,我是自己下的 pdf 然後列印的。

函數程序設計語言--計算機模型、編譯技術、系統結構 (豆瓣)

目錄

第1章 引論

1.1 函數式程序設計語言

1.1.1 APL語言

1.1.2 FP語言

1.1.3 ML語言

1.1.4 Lisp語言

1.1.5 SASL,KRC和Miranda語言

1.1.6 Haskel1語言

1.1.7 其它的函數語言

1.2 函數語言的基本特徵和實現論題

1.2.1 函數語言的基本特徵

1.2.2 程序的執行效率

1.2.3 主要實現論題

1.3 函數語言的圖重寫實現技術

1.4 本章小結

第2章 函數式程序設計語言

2.1 函數語言的特點

2.1.1 變數名和值

2.1.2 執行順序

2.1.3 循環和遞歸

2.1.4 數據結構

2.1.5 函數作為值

2.2 ML語言簡介

2.2.1 ML的特點

2.2.2 類型

2.2.3 幾點說明

2.3 SML標準類型

2.3.1 基本類型

2.3.2 表類型

2.3.3 元組類型

2.3.4 函數的類型和表達式

2.4 sML標準函數

2.4.1 標準布爾型函數

2.4.2 標準算術運算函數和運算符的重載

2.4.3 標準字元串函數

2.4.4 標準表函數

2.4.5 字元、字元串和表

2.4.6 比較運算符

2.5 SML函數定義

2.5.1 函數

2.5.2 約束變數的類型

2.5.3 定義

2.5.4 條件表達式

2.5.5 遞歸和函數定義

2.5.6 訪問元組約束變數中的元素

2.5.7 模式匹配

2.5.8 局部定義

2.6 SML類型

2.6.1 類型表達式和類型縮寫(abbreviatedtypes)

2.6.2 類型變數和多態性

2.6.3 定義新類型

2.6.4 抽象數據類型

2.6.5 樹

2.7 本章小結

第3章 λ演算

3.1 λ演算的基本概念和定義

3.2 λ演算的歸約

3.3 遞歸定義

3.4 純λ演算中的算術

3.5 本章小結

第4章 函數語言的歸約計算方法

4.1 歸約計算的語義

4.2 正規序歸約的語用

4.2.1 串歸約(stringreduction)

4.2.2 標準環境歸約(standardenvironmentreduction)

4.2.3 圖歸約(graphreducti0n)

4.2.4 全惰性圖歸約(fulllazygraphreduction)

4.2.5 惰性圖歸約(1azygraphreduction)

4.2.6 圖歸約的特點

4.3 組合子圖歸約(c0mbinator-basedgraphreduction)

4.3.1 基本思想

4.3.2 組合子及其性質

4.3.3 超組合子性質

4.4 本章小結

第5章 函數語言的圖重寫計算模型

5.1 計算對象的描述形式

5.2 計算的操作方式

5.3 計算的控制方式

5.3.1 並行性開發策略

5.3.2 並行計算的控制管理方法

5.3.3 並行計算任務的粒度(granularity)

5.4 本章小結

第6章 編譯中間語言

6.1 中間語言的基本概念

6.2 CIL程序的基本描述形式

6.3 CIL程序例子

6.4 CIL程序執行演算法

6.5 CIL語言對函數式程序的支持

6.5.1 TermL模式結構的轉換

6.5.2 非平坦TermL的轉換

6.5.3 標記TermR

6.6 本章小結

第7章 多態類型及類型檢查

7.1 多態類型

7.2 程序的表示

7.3 類型推導與類型合一

7.4 類型變數與環境

7.5 類型推導演算法

7.5.1 類型推導演算法中用到的函數

7.5.2 類型推導演算法

7.6 本章小結

第8章 自由變數的消除與優化組合子

8.1 λ-提升

8.1.1 λ-提升方法

8.1.2 λ-提升方法的評價

8.2 最大自由表達式(mfe)抽取

8.2.1 mfe抽取演算法

8.2.2 最大自由表達式抽取方法的分析

8.3 函數部分作用共享分析

8.3.1 部分作用的共享及其表示

8.3.2 共享分析方法

8.4 優化組合子生成方法

8.5 本章小結

第9章 惰性模式匹配及其編譯方法

9.1 模式與模式匹配

9.2 最小擴展模式與模式匹配樹

9.2.1 模式匹配謂詞及其性質

9.2.2 惰性模式匹配演算法的存在性與最小擴展模式

9.2.3 MEPⅡ的生成和匹配樹的構造

9.3 模式的平坦化和參量一致化變換

9.3.1 兩個簡單的轉換方法及其效率

9.3.2 重寫規則的生成方法

9.4 本章小結

第10章 惰性函數語言程序嚴格性分析方法

10.1 抽象解釋和嚴格性分析方法

10.1.1 基於抽象解釋的嚴格性分析方法

10.1.2 嚴格性分析與函數程序的並行性開發

10.1.3 惰性計算方式和結構數據的計算

10.2 投影分析分析方法

10.2.1 投影和計算的描述

10.2.2 基於投影分析的嚴格性分析方法

10.2.3 舉例

10.3 並行性開發方法的優化

10.3.1 運算元

10.3.2 並行性開發方法

10.4 本章小結

第11章 編譯時粒度分析及估算方法

11.1 現狀與問題

11.2 K0zen語義與分布函數

11.3 分布函數與程序粒度的關係

11.4 程序粒度分析的系統化方法

11.5 細粒度任務的收攏(coalescing)原理

11.6 任務顆粒的分類及合併

11.7 引入啟發因素的編譯時粒度分析演算法HCGA

11.8 實驗及與相關工作的比較

11.9 本章小結

第12章 存儲管理及垃圾單元回收

12.1 概述

12.2 Ash0ke的改進引用計數法

12.2.1 Ashoke演算法

12.2.2 Ashoke演算法的正確性證明

12.2.3 並行環境中的Ash0ke演算法實現

12.3 基於引用計數的垃圾回收技術

12.3.1 經典的引用計數法

12.3.2 ARVIND/THOMAS的帶權引用計數法

12.3.3 垃圾單元回收的惰性方法

12.3.4 帶權的垃圾單元惰性回收方法

12.4 FL/TBD/TBC/CRC與CM分立的垃圾回收開銷分析

12.5 FL/TBD/TBC/CRC與CM混合的垃圾回收開銷分析

12.6 並行系統中的垃圾單元回收

12.7 本章小結

第13章 多相併行圖重寫執行模型HPGREM

13.1 並行執行模型的研究現狀

13.2 HPGREM的形式化描述

13.2.1 基本定義

13.2.2 形式化描述

13.3 存儲管理及執行環境組織

13.4 並行性開發策略

13.4.1 並行性開發

13.4.2 任務分布的Lazy-Eager原理

13.4.3 基於LEDT原理的任務分布演算法

13.5 並行執行模型HPGREM的多相性質

13.6 本章小結

第14章 並行抽象機PAM/TGR及體系結構

14.1 概述

14.2 存儲器組織及數據表示

14.2.1 存儲器組織

14.2.2 圖結點及數據表示

14.3 並行抽象機PAM/TGR的指令系統

14.3.1 並行抽象機指令集

14.3.2 抽象機的定址方式

14.3.3 並行抽象機PAM/TGR的優化編譯器

14.4 並行抽象機的指令執行演算法

14.4.1 環境生成指令(push)執行演算法

14.4.2 環境拷貝指令(copy)執行演算法

14.4.3 重寫指令(grew)執行演算法

14.4.4 重寫任務的管理指令(take,mask,sndt,recy)執行演算法

14.4.5 調用基元操作與存儲管理指令(call,flsh)執行演算法

14.5 並行抽象機PAM/TGR的體系結構

14.6 並行抽象機PAM/TGR的性能評價

14.6.1 基於Benchmark的PAM/TGR性能測試

14.6.2 與相關係統的性能比較

14.7 本章小結

參考文獻

· · · · · · (收起)


復旦信息學院每年都有開haskell的課程,但不知道是否有配套的講義。


推薦閱讀:

TAG:函數式編程 | Haskell | Lisp | Scheme |