《實用Common Lisp程式設計》pdf格式下載電子書免費下載
內容簡介
由塞貝爾編著的《實用Common Lisp程式設計》是一本不同尋常的Common Lisp入門書。《實用Common Lisp程式設計》首先從作者的學習經過及語言歷史出發,隨後用21個章節講述了各種基礎知識,主要包括:REPL及Common Lisp的各種實現、S-表示式、函式與變數、標準巨集與自定義巨集、數字與字元以及字串、集合與向量、列表處理、檔案與檔案I/O處理、類、FORMAT格式、符號與包,等等。而接下來的9個章節則翔實地介紹了幾個有代表性的例項,其中包含如何構建垃圾過濾器、解析二進位制檔案、構建ID3解析器,以及如何編寫一個完整的MP3 Web應用程式等內容。最後還對一些未介紹內容加以延伸。
《實用Common Lisp程式設計》內容適合Common Lisp初學者及對之感興趣的相關人士。
作者簡介
Peter Seibel 從作家演變成程式設計師,又從程式設計師演變成作家,其職業生涯可謂一波三折。他在獲得英語專業學士學位後做過一段時間的記者工作,後來被Web所吸引。在20世 紀90年代早期,他用Perl建立了Mother Jones雜誌和Organic Online網站。他作為WebLogic的早期僱員參與了Java革命,隨後又在加州大學伯克利分校教授Java程式設計。他也是第二代Lisp程式設計師之 一,並曾經是Symbolics的早期股東。2003年他辭去技術工作,潛心研究Lisp,並憑藉本書獲得Jolt生產效率大獎。2009年出版了名噪一 時的訪談錄《程式設計人生》(Coders at Work)。
目錄
第1 章 緒言:為什麼是Lisp 1
1.1 為什麼是Lisp 2
1.2 Lisp 的誕生 4
1.3 本書面向的讀者 6
第2 章 周而復始:REPL 簡介 8
2.1 選擇一個Lisp 實現 8
2.2 安裝和執行Lisp in a Box 10
2.3 放開思想:互動式程式設計 10
2.4 體驗REPL 11
2.5 Lisp 風格的“Hello, World” 12
2.6 儲存工作成果 13
第3 章 實踐:簡單的資料庫 17
3.1 CD 和記錄 17
3.2 錄入CD 18
3.3 檢視資料庫的內容 19
3.4 改進使用者互動 21
3.5 儲存和載入資料庫 23
3.6 查詢資料庫 24
3.7 更新已有的記錄——WHERE 再戰江湖 28
3.8 消除重複,獲益良多 29
3.9 總結 33
第4 章 語法和語義 34
4.1 括號裡都可以有什麼 34
4.2 開啟黑箱 34
4.3 S-表示式 36
4.4 作為Lisp 形式的S-表示式 38
4.5 函式呼叫 39
4.6 特殊操作符 39
4.7 巨集 41
4.8 真、假和等價 42
4.9 格式化Lisp 程式碼 43
第5 章 函式 46
5.1 定義新函式 46
5.2 函式形參列表 47
5.3 可選形參 48
5.4 剩餘形參 49
5.5 關鍵字形參 50
5.6 混合不同的形參型別 51
5.7 函式返回值 52
5.8 作為資料的函式——高階函式 53
5.9 匿名函式 55
第6 章 變數 57
6.1 變數的基礎知識 57
6.2 詞法變數和閉包 60
6.3 動態變數 61
6.4 常量 65
6.5 賦值 65
6.6 廣義賦值 66
6.7 其他修改位置的方式 67
第7 章 巨集:標準控制構造 69
7.1 WHEN 和UNLESS 70
7.2 COND 71
7.3 AND、OR 和NOT 72
7.4 迴圈 72
7.5 DOLIST 和DOTIMES 73
7.6 DO 74
7.7 強大的LOOP 76
第8 章 如何自定義巨集 78
8.1 Mac 的故事:只是一個故事 78
8.2 巨集展開期和執行期 79
8.3 DEFMACRO 80
8.4 示例巨集:do-primes 81
8.5 巨集形參 82
8.6 生成展開式 83
8.7 堵住漏洞 84
8.8 用於編寫巨集的巨集 88
8.9 超越簡單巨集 90
第9 章 實踐:建立單元測試框架 91
9.1 兩個最初的嘗試 91
9.2 重構 92
9.3 修復返回值 94
9.4 更好的結果輸出 95
9.5 抽象誕生 97
9.6 測試層次體系 97
9.7 總結 99
第10 章 數字、字元和字串 101
10.1 數字 101
10.2 字面數值 102
10.3 初等數學 104
10.4 數值比較 106
10.5 高等數學 107
10.6 字元 107
10.7 字元比較 107
10.8 字串 108
10.9 字串比較 109
第11 章 集合 111
11.1 向量 111
11.2 向量的子型別 113
11.3 作為序列的向量 114
11.4 序列迭代函式 114
11.5 高階函式變體 116
11.6 整個序列上的操作 117
11.7 排序與合併 118
11.8 子序列操作 118
11.9 序列謂詞 119
11.10 序列對映函式 120
11.11 雜湊表 120
11.12 雜湊表迭代 122
第12 章 LISP 名字的由來:列表處理 123
12.1 “沒有列表” 123
12.2 函數語言程式設計和列表 126
12.3 “破壞性”操作 127
12.4 組合回收性函式和共享結構 129
12.5 列表處理函式 131
12.6 對映 132
12.7 其他結構 133
第13 章 超越列表:點對單元的其他用法 134
13.1 樹 134
13.2 集合 136
13.3 查詢表:alist 和plist 137
13.4 DESTRUCTURING-BIND 141