Haskell函式式編程入門

Haskell函式式編程入門

《Haskell函式式編程入門》是一本講解Haskell這門經過精心設計和錘鍊的純函式式程式語言的書,同時也是一本通過Haskell來講解函式式編程的方法與思想的書。全書共分三個部分。第一部分介紹函式式編程在解決數學與算法問題的精簡與直觀的特色,讓不熟悉Haskell的讀者對其建立初步的了解,同時通過解決一些算法問題,如裴波那契數列、八皇后問題、排序問題、24點等,引發一些對函式式編程方式的思考;第二部分介紹一些略微深入的Haskell內容,包括函子、Monoid、IO與Monad轉換器等;最後一部分則涉及快速測試、惰性求值和並行編程等主題。 《Haskell函式式編程入門》既適合對Hasell和函式式編程感興趣的程式設計師閱讀,又適合作為Haskell語言入門教程,供計算機科學與數學專業的學生參考。

基本介紹

內容簡介

通過有趣的數學與算法問題來學習Haskell語言
內容循序漸進,由淺入深
例子相對簡短,有助於選擇性的閱讀
對於函式編程中的Monad做了細緻的討論
部分術語給出了中英文對照,有助於查閱相關英文文獻

作者簡介

張淞,1989年1月出生於黑龍江省綏芬河市,酷愛數學、物理,進入大學後開始喜歡學習與研究各類程式語言,並成為了一名Haskell愛好者。2012年7月於英國諾丁漢大學獲得計算機科學本科學位。2013年11月於英國牛津大學獲得計算機科學碩士學位。目前喜歡學習與研究λ演算、類型系統、抽象代數、範疇論、邏輯證明、組合數學等內容。

圖書目錄

第1章 Haskell簡介
1.1 Haskell的由來
1.2 Haskell編譯器的安裝以及 編寫環境
1.3 GHCi的使用
1.3.1 GHCi中的命令
1.3.2 在GHCi中調用函式
1.4 .hs和.lhs檔案、注釋與庫函式
1.5 第一個Haskell程式HelloWorld!
本章小結
第2章 類型系統和函式
2.1 Haskell的類型與數據
2.1.1 Haskell常用數據類型
2.1.2 函式類型
2.1.3 類型的別名
2.1.4 類型的重要性
2.2 Haskell中的類型類
2.2.1 相等類型類:Eq
2.2.2 有序類型類:Ord
2.2.3 枚舉類型類:Emum
2.2.4 有界類型類:Bounded
2.2.5 數字類型類:Num
2.2.6 可顯示類型類:Show
2.2.7 小結
2.3 Haskell中的函式
2.3.1 Haskell中的值
2.3.2 函式思想入門
2.3.3 函式的基本定義格式
2.3.4 λ表達式
2.3.5 參數的綁定
2.4 Haskell中的表達式
2.4.1 條件表達式
2.4.2 情況分析表達式
2.4.3 守衛表達式
2.4.4 模式匹配
2.4.5 運算符與函式
2.4.6 運算符與自定義運算符
本章小結
第3章 基於布爾值的函式
3.1 關鍵字module與import簡介
3.2 簡易布爾值的函式
3.3 與非門和或非門
本章小結
第4章 庫函式及其套用
4.1 預載入庫函式
4.1.1 常用函式
4.1.2 基於列表的函式
4.1.3 定義曆法公式
4.1.4 字元串處理的函式
4.2 字元與位函式館簡介
4.2.1 Data.Char
4.2.2 Data.Bits
本章小結
第5章 遞歸函式
5.1 遞歸函式的概念
5.2 簡單遞歸函式
5.3 擴展遞歸與尾遞歸
5.4 互調遞歸
5.5 麥卡錫的91函式
5.6 斐波那契數列
5.7 十進制數字轉成羅馬數字
5.8 二分法查找
5.9 漢諾塔
5.10 排序算法
5.10.1 插入排序
5.10.2 冒泡排序
5.10.3 選擇排序
5.10.4 快速排序
5.10.5 歸併排序
小結
5.11 遞歸基本條件與程式終止
5.12 遞歸與不動點
5.13 無基本條件遞歸和惰性求值
本章小結
第6章 列表內包
6.1 列表生成器
6.2 素數相關趣題
6.3 凱撒加密
6.3.1 加密
6.3.2 解密
6.4 排列與組合問題
6.4.1 排列問題
6.4.2 錯位排列問題
6.4.3 組合問題
6.5 八皇后問題
6.6 計算矩陣乘法
6.7 最短路徑算法與矩陣乘法
本章小結
第7章 高階函式與複合函式
7.1 簡單高階函式
7.2 摺疊函式foldr與foldl
7.3 mapAccumL與mapAccumR函式
7.4 複合函式
本章小結
第8章 定義數據類型
8.1 數據類型的定義
8.1.1 枚舉類型
8.1.2 構造類型
8.1.3 參數化類型
8.1.4 遞歸類型
8.1.5 雜合定義類型
8.2 類型的同構
8.3 使用newtype定義類型
8.4 數學歸納法的有效性
8.5 樹
8.6 卡特蘭數問題
8.7 霍夫曼編碼
8.8 解24點
8.9 zipper
8.10 一般化的代數數據類型
8.11 類型的kind
8.11.1 類型的kind
8.11.2 空類型的聲明
本章小結
第9章 定義類型類
9.1 定義類型類
9.2 Haskell中常見類型類
9.2.1 常用類型類
9.2.2 Functor
9.2.3 Applicative
9.2.4 Alternative
9.2.5 簡易字元識別器
9.2.6 Read類型類
9.2.7 單位半群(Monoid)
9.2.8 Foldable與Monoid類型類
9.2.9 小結
9.3 類型類中的類型依賴
9.4 類型類中的關聯類型
9.5 定長列表
9.6 運行時重載
9.7 Existential類型
本章小結
第10章 Monad初步
10.1 Monad簡介
10.2 從Identity Monad開始
10.3 Maybe Monad
10.4 Monad定律
10.5 列表Monad
10.6 Monad相關運算符
10.7 MonadPlus
10.8 Functor、Applicative與Monad的關係
本章小結
第11章 系統編程及輸入/輸出
11.1 不純函式與副作用
11.2 IO Monad
11.3 輸入/輸出處理
11.3.1 Control.Monad中的函式
11.3.2 系統環境變數與命令行參數
11.3.3 數據的讀寫
11.3.4 格式化輸出printf函式
11.3.5 printf函式的簡易實現
11.4 星際譯王詞典
11.4.1 二分法查找
11.4.2 散列表的使用
11.5 簡易異常處理
11.6 Haskell中的時間
本章小結
……
第12章 記錄器Monad、讀取器Monad、狀態Monad
第13章 Monad轉換器
第14章 QuickCheck簡介
第15章 惰性求值簡介
第16章 並行與並發編程
參考文獻
後記

相關詞條

熱門詞條

聯絡我們