截至2016年,中文圈內有沒有非常好的函數式編程語言講義?
02-02
安利一本我的新書《魔力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 標記TermR6.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 引入啟發因素的編譯時粒度分析演算法HCGA11.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章 多相併行圖重寫執行模型HPGREM13.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的課程,但不知道是否有配套的講義。
推薦閱讀: