編輯推薦
當前,函數式語言和函數式編程掀起瞭一股新的熱潮,人們用函數式語言開發齣越來越多的應用和係統。OCaml就是一種函數式程序設計語言。
本書是學習OCaml語言的入門讀物,重點講解函數式編程的基礎知識以及OCaml語言編程技巧,同時兼顧應用軟件開發的需求。本書注意將OCaml編程方式同其他語言的編程方式進行比較,便於熟悉其他語言的程序員理解OCaml的特點。書中給齣瞭很多示例代碼,並且在每章末尾給齣瞭一些練習題,以幫助讀者掌握所學的知識。附錄部分給齣瞭部分練習題的解答。
本書適閤想要瞭解函數式語言原理和學習OCaml程序設計的讀者閱讀參考。
本書包括以下內容:
★ 函數式控製結構及OCaml語言基礎;
★ 函數式數據結構;
★ 模塊化程序設計;
★ 命令式程序設計;
★ 模塊化圖形程序設計;
★ 移植OCaml圖形程序到F#;
★ 多語言聯閤程序設計;
★ 麵嚮對象程序設計。
本書深入淺齣,循序漸進,非常適閤初學者從零起步閱讀和學習。另一方麵,書中不僅討論瞭大量語言特徵的情況和編程技術問題,也介紹瞭一些背景和相關理論問題,以幫助讀者更清晰地理解函數式編程的思想、技術和方法。本書的齣版將大大改善國內計算機工作者學習OCaml語言及其編程技術的基礎條件。
——北京大學數學係教授 裘宗燕
內容簡介
OCaml語言是一種函數式程序設計語言。
本書重點介紹函數式編程的基礎知識以及OCaml程序設計的技巧,同時兼顧應用軟件開發的需求。全書共8章,前5章講解OCaml語言的函數式控製結構、數據結構、模塊化程序設計、命令式程序設計和圖形程序設計;第6章介紹如何把OCaml移植到F#,第7章介紹通過C#開發的用戶界麵調用OCaml或F#程序,第8章介紹麵嚮對象程序設計。
本書適閤想要學習OCaml程序語言或者想要學習函數式編程的讀者閱讀參考。
作者簡介
陳鋼
航天科工集團三院304所國傢韆人計劃專傢,中國計算機學會會員。本科畢業於浙江大學數學,碩士畢業於北京大學計算機係,並在法國巴黎第七大學獲得計算機博士學位。在OCaml語言和COQ定理證明器發源地受過專業訓練,是國內初次開展COQ定理證明工作及其在集成電路中的應用的學者,曾在上海交大、南澳大學、波士頓大學、摩托羅拉公司工作。2013年加入航天科工集團三院304所,從事基於定理證明的AES加密算法驗證與FPGA實現研究、缺陷分析軟件評估研究和形式化飛行控製數學研究。2017年組織瞭計算機學會“形式化工程數學”研討會。
張靜 東北大學計算機專業本科畢業。在北京京航計算通訊研究所工作期間,跟隨陳鋼老師學習OCaml和COQ,並從事程序缺陷分析軟件的評估工作。目前在中石油新疆油田從事信息係統管理工作。
目錄
第 1章 函數式控製結構 1
1.1 OCaml解釋器 2
1.2 錶達式和let定義 3
1.3 let局部定義 6
1.4 基本類型 8
1.4.1 整數類型int 9
1.4.2 浮點類型float 11
1.4.3 字符類型char 13
1.4.4 unit類型和簡單輸入輸齣 14
1.4.5 字符串類型string與
printf函數 15
1.4.6 bool類型和if錶達式 18
1.5 乘積類型和模式匹配初步 21
1.6 函數和函數類型 23
1.6.1 簡單函數 23
1.6.2 函數錶達式 28
1.6.3 function和fun比較 30
1.6.4 高階函數 31
1.6.5 遞歸函數 33
1.6.6 相互遞歸函數 36
1.6.7 模式匹配錶達式 36
1.7 多態類型 40
1.7.1 類型變量 40
1.7.2 類型推導 42
1.8 λ演算對函數式語言的影響 44
1.9 中綴操作符與前綴操作符 45
1.10 同構函數和柯裏化 46
1.11 循環迭代函數 47
1.12 本章小結 51
1.13 練習 52
第 2章 函數式數據結構 55
2.1 函數式數據類型和自動存儲
管理 55
2.2 類型的顯式定義 59
2.3 記錄類型 61
2.3.1 記錄類型和記錄的創建 62
2.3.2 函數的記錄參數 63
2.3.3 記錄字段的重名 63
2.3.4 記錄的部分重建 64
2.3.5 記錄字段簡寫 65
2.3.6 多態記錄類型 65
2.4 聯閤類型 65
2.4.1 帶參數的構造子 67
2.4.2 由單個構造子構成
的聯閤類型 68
2.4.3 遞歸類型 68
2.4.4 帶多態變量的聯閤類型 70
2.4.5 錶 70
2.4.6 值的遞歸定義 71
2.4.7 多態變體 71
2.5 錶的編程技術 73
2.5.1 錶的基本操作 73
2.5.2 定義錶處理函數 75
2.5.3 綫性錶的同態映射 78
2.5.4 快速排序算法 80
2.6 函數運行時間分析 83
2.7 程序文件的解釋執行和編譯執行 85
2.8 和C語言比較執行效率 88
2.9 尾遞歸 90
2.10 option類型和關聯錶 91
2.11 帶標簽的函數參數以及
可選參數 92
2.11.1 標簽參數 92
2.11.2 可選參數 93
2.11.3 標簽參數和可選參數
的顯式類型說明 94
2.11.4 高階函數與標簽參數
和可選參數 95
2.11.5 帶標簽的標準庫 96
2.12 延遲求值 96
2.13 本章小結 98
2.14 練習 99
第3章 模塊化程序設計 102
3.1 基於無序錶的集閤 103
3.2 基於有序錶的集閤 105
3.3 模塊和接口 106
3.4 函子 111
3.5 函子的接口 115
3.6 用Set庫構造專用集閤模塊 119
3.7 生成質數集閤 121
3.8 異常處理 125
3.8.1 異常錶達式 125
3.8.2 異常捕獲 126
3.8.3 幾個常見的異常 128
3.9 模塊的層次結構 129
3.9.1 多層模塊 129
3.9.2 模塊和文件 130
3.9.3 自動模塊化編譯
ocamlbuild 132
3.9.4 多參數函子 133
3.9.5 模塊局部打開和
模塊包含 134
3.10 模塊用做錶達式 136
3.11 抽象類型 138
3.11.1 抽象類型的作用和限製 138
3.11.2 私有抽象類型 139
3.11.3 局部抽象類型 141
3.12 動態構造模塊接口 142
3.12.1 用接口構造接口 143
3.12.2 從模塊推導接口 144
3.13 本章小結 144
3.14 練習 146
第4章 命令式程序設計 149
4.1 引用變量和賦值語句 150
4.2 可更改的記錄分量 153
4.3 數組 155
4.4 字符串和字節序列 160
4.5 弱類型變量和多態
函數的部分作用 163
4.6 Printf庫和格式化輸齣 165
4.7 Scanf庫和格式化輸入 168
4.8 文件輸入輸齣 171
4.9 命令式控製結構 174
4.9.1 賦值語句 174
4.9.2 順序控製 175
4.9.3 操作符“|>” 176
4.9.4 循環控製 177
4.9.5 修改輸入參數的函數 178
4.10 編程案例:四嚮鏈錶 178
4.11 散列錶、棧、隊列及
命令式模塊 185
4.12 本章小結 189
4.13 練習 190
第5章 模塊化圖形程序設計 192
5.1 生成帶圖形庫的OCaml解釋器 193
5.2 圖形窗口 193
5.3 圖形窗口初始化及參數設置 196
5.4 事件循環 198
5.5 顔色設置 199
5.6 模塊化圖形編程 200
5.7 文本數字環及字符串繪製 204
5.8 端點小環及圖形填充 208
5.9 端點連接綫及弧綫繪製 212
5.10 命令行參數 217
5.11 電機接綫圖的完整代碼 220
5.12 本章小結 225
5.13 練習 226
第6章 移植OCaml圖形程序到F# 229
6.1 打開窗體 230
6.2 窗體初始化 232
6.3 在窗體中間畫圓 234
6.4 基本作圖模塊 235
6.5 文本數字環 239
6.6 端點小環 242
6.7 連接綫 244
6.8 F#版電機接綫圖完整代碼 245
6.9 怎樣提高OCaml代碼的
可移植性 252
6.10 本章小結 253
6.11 練習 254
第7章 多語言聯閤程序設計 255
7.1 軟件總體架構 255
7.2 C#調用OCaml命令行作圖
程序 257
7.3 C#調用F#動態共享DLL
作圖程序庫 259
7.4 C#調用Access數據庫 261
7.5 本章小結 264
第8章 麵嚮對象程序設計 265
8.1 類和對象 266
8.2 基於對象方法畫電機圓 268
8.3 類的繼承 269
8.4 多重繼承 271
8.5 多重繼承中的同名方法 272
8.6 同名方法的延遲綁定 275
8.7 私有方法 275
8.8 虛擬類和子類型 276
8.9 類中的多態類型 279
8.10 多態類的繼承 283
8.11 二元方法 287
8.12 子類型與子類 288
8.13 類的類型 292
8.14 對象之間的相等關係 293
8.15 麵嚮對象的電動機接綫程序 294
8.16 本章小結 303
8.17 練習 305
附錄 部分習題參考答案 307
參考文獻 315
OCaml語言編程基礎教程 下載 mobi epub pdf txt 電子書