Haskell函數式編程基礎(原書第3版電腦科學與技術)/國外信息科學與技術優秀圖書系列 Haskell函数式编程基础(原书第3版)

湯普森 (Simon Thompson)

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

  《Haskell函數式編程基礎(原書第3版)》是一本非常優秀的Haskell函數式程序設計的入門書,依次介紹函數式程序設計的基本概念、編譯器和解釋器、函數的各種定義方式、簡單程序的構造、多態和高階函數、數組和列表的結構化數據、列表上的原始遞歸和推理、輸入輸出I/O的控制處理、類型檢測方法、代數數據類型、抽象數據類型、惰性計算等內容。《Haskell函數式編程基礎(原書第3版)》包含大量的實例和習題,註重程序測試、程序證明和問題求解,易讀易學。《Haskell函數式編程基礎(原書第3版)》循序漸進,從基本的函數式程序設計直至高級專題,讓讀者對Haskell的學習不斷深入。

<目錄>

第1章 函數式程序設計簡介
1.1 電腦與建模
1.2 什麽是函數
1.3 圖形與函數
1.4 類型
1.5 函數式程序設計語言Haskell
1.6 表達式與計算
1.7 定義
1.8 函數定義
1.9 類型與函數式程序設計
1.10 計算與求值
1.11 函數式程序設計的精髓
1.12 領域專用語言
1.13 圖形的兩種模型.
1.14 測試、性質和證明

第2章 認識Haskell與GHCi
2.1 第一個Haskell程序
2.2 在工作中使用Haskell
2.3 使用GHCi
2.4 標準庫Prelude和Haskell函數庫
2.5 模塊
2.6 例子:Pictures
2.7 錯誤與錯誤信息

第3章 基本類型與定義
3.1 布爾類型Bool
3.2 整數類型:Integer和Int
3.3 重載
3.4 守衛
3.5 字符和串
3.6 浮點數Float
3.7 語法
第4章 設計與書寫程序
4.1 如何開始一個Haskell程序的設計
4.2 逐步求解問題:局部定義
4.3 自定義類型:枚舉類型
4.4 遞歸
4.5 實踐中的原始遞歸
4.6 擴展練習:圖形.
4.7 遞歸的一般形式
4.8 程序測試.
第5章 數據類型、多元組與列表
5.1 多元組和列表簡介
5.2 元組類型
5.3 代數類型簡介
5.4 本書對列表的介紹方法
5.5 Haskell的列表
5.6 列表概括
5.7 圖書館數據庫

第6章 列表程序設計.
6.1 通用函數:多態
6.2 Haskell引導庫Prelude中的列表函數
6.3 認識Haskell函數庫
6.4 Picture例子的實現
6.5 擴展練習:圖形的另一種實現
6.6 擴展練習:有位置的圖形
6.7 擴展練習:超市賬單
6.8 擴展練習:紙牌和紙牌游戲

第7章 定義列表上的函數
7.1 再談模式匹配
7.2 列表與列表模式
7.3 列表上的原始遞歸
7.4 尋找原始遞歸定義
7.5 列表上的一般遞歸
7.6 例子:文本處理

第8章 游戲:Haskell的I/O
8.1 石頭-剪刀-布的策略
8.2 為什麽I/O是一個問題
8.3 輸入/輸出
8.4 do語法
8.5 迭代與遞歸
8.6 石頭-剪刀-布:玩游戲

第9章 程序推理
9.1 理解定義
9.2 測試與證明
9.3 定義性、終止性和有限性
9.4 一些邏輯知識
9.5 歸納法
9.6 歸納證明的進一步例子
9.7 推廣證明目標

第10章 推廣:計算模型
10.1 列表上的計算模式
10.2 高階函數:函數作為參數
10.3 折疊與原始遞歸
10.4 推廣:拆分列表
10.5 再談實例

第11章 高階函數
11.1 運算:函數的復合和應用
11.2 函數的表達式:λ抽象
11.3 部分應用
11.4 卡瑞式函數
11.5 定義高階函數
11.6 驗證與通用函數

第12章 高級程序開發
12.1 再談Picture
12.2 函數作為數據:策略組合子
12.3 函數作為數據:正則表達式匹配
12.4 函數作為數據的實例
12.5 例子:建立索引
12.6 實踐中的程序開發
12.7 理解程序

第13章 重載,類族和類型檢測
13.1 為什麽使用重載?
13.2 引進類族
13.3 簽名和實例
13.4 Haskell的預定義類族
13.5 類型檢測和類型推導概述
13.6 單態類型檢測
13.7 多態類型檢測
13.8 類型檢測與類族

第14章 代數類型
14.1 代數類型回顧
14.2 遞歸代數類型
14.3 多態代數類型
14.4 程序錯誤的表示
14.5 使用代數類型設計系統
14.6 代數類型與類族
14.7 代數類型的推理

第15章 實例研究:Hu.man編碼
15.1 Haskell的模塊
15.2 模塊設計
15.3 編碼與解碼
15.4 實現一
15.5 構造Hu.man樹
15.6 設計
15.7 實現二

第16章 抽象數據類型
16.1 類型表示
16.2 Haskell抽象數據類型機制
16.3 隊列
16.4 設計
16.5 模擬
16.6 實現模擬
16.7 查找樹
16.8 集合
16.9 關系和圖
16.1 0評註

第17章 惰性計算
17.1 惰性計算
17.2 計算規則與惰性計算
17.3 再談列表概括
17.4 數據導向編程
17.5 實例:分析表達式
17.6 無窮列表
17.7 為什麽使用無窮列表
17.8 實例:模擬
17.9 再談證明

第18章 單子程序設計
18.1 輸入/輸出程序
18.2 深入I/O
18.3 計算器
18.4 再談do記法
18.5 單子:為函數式程序設計定製的語言
18.6 例子:樹上的單子式計算

第19章 領域專用語言
19.1 程序語言無處不在
19.2 為什麽在Haskell中嵌入DSL?
19.3 淺嵌入和深嵌入
19.4 處理正則表達式的DSL
19.5 單子式DSL
19.6 表示計算的DSL:QuickCheck中的數據生成
19.7 深入DSL

第20章 時間與空間行為
20.1 函數的復雜度
20.2 計算的復雜度
20.3 集合的實現.
20.4 空間行為
20.5 再談折疊
20.6 避免重復計算:記憶

第21章 結論
21.1 函數式程序設計的威力
21.2 深入Haskell
21.3 網絡上的Haskell
21.4 其他函數式程序設計語言

附錄A 函數式,命令式和OO程序設計
A.1 值與狀態
A.2 函數與變量
A.3 程序驗證
A.4 記錄和元組
A.5 列表和指針
A.6 高階函數
A.7 多態
A.8 定義類型與類族
A.9 列表概括
A.10 惰性計算
A.11 狀態,無窮列表和單子
A.12 結論
附錄B 術語解釋
附錄C Haskell運算符
附錄D Haskell實踐
D.1 實現
D.2 下載Craft3e代碼
D.3 使用GHCi
D.4 Haskell編輯器
附錄E GHCi錯誤
E.1 語法錯誤
E.2 類型錯誤
E.3 程序錯誤
E.4 模塊錯誤
E.5 系統信息
附錄F 項目建設
F.1 游戲與智力測驗
F.2 Web圖形
F.3 邏輯
F.4 投票系統
F.5 有窮自動機
F.6 領域專用語言
參考文獻
索引