<內容介紹>
函數式編程越來越多地從學術界走向工業界,很多和人們日常相關的重要系統背後都有函數式編程的身影,並且比例越來越高。在這種大的趨勢下,甚至很多指令式編程語言也受其影響加入了對一些函數式特徵的支持,比如Java 8終於將lambda加了進來。
基烏薩諾、比亞爾納松著的這本《Scala函數式編程》對想要接觸函數式編程,或在實際業務中已經使用函數式但想要系統鞏固函數式編程知識的程序員來說,是一本非常有價值的書。它以Scala為載體,涵蓋了函數式的基礎和高階特性。尤其裡面的一些高階特性是在其他書籍中極少介紹到的。因而,非常值得亟待解決高併發問題,或大數據領域從業的開發人員學習。
<章節目錄>
原推薦序
序言
致謝
關於本書
第一部分 函數式編程介紹
1 什麼是函數式編程
1.1 函數式編程的好處:一個簡單的例子
1.1.1 一段帶有副作用的程序
1.1.2 函數式的解法:去除副作用
1.2 (純)函數究竟是什麼
1.3 引用透明、純粹度以及替代模型
1.4 小結
2 在Scala中使用函數式編程
2.1 Scala語言介紹
2.2 運行程序
2.3 模塊、對象和命名空間
2.4 高階函數:把函數傳給函數
2.4.1 迂迴做法:使用循環方式
2.4.2 第一個高階函數
2.5 多態函數:基於類型的抽象
2.5.1 一個多態函數的例子
2.5.2 對高階函數傳入匿名函數
2.6 通過類型來實現多態
2.7 小結
3 函數式數據結構
3.1 定義函數式數據結構
3.2 模式匹配
3.3 函數式數據結構中的數據共享
3.3.1 數據共享的效率
3.3.2 改進高階函數的類型推導
3.4 基於list的遞歸併泛化為高階函數
3.4.1 更多與列表相關的函數
3.4.2 用簡單組件組合list函數時的效率損失
3.5 樹
3.6 小結
4 不是用異常來處理錯誤
4.1 異常的優點與劣勢
4.2 異常的其他選擇
4.3 Option數據類型
4.3.1 Option的使用模式
4.3.2 Option的組合、提升及對面向異常的API的包裝
4.4 Either數據類型
4.5 小結
5 嚴格求值和惰性求值
5.1 嚴格和非嚴格函數
5.2 一個擴展例子:惰性列表
5.2.1 對Stream保持記憶,避免重複運算
5.2.2 用於檢測Stream的helper函數
5.3 把函數的描述與求值分離
5.4 無限流與共遞歸
5.5 小結
6 純函數式狀態
6.1 以副作用方式生成隨機數
6.2 純函數式隨機數生成器
6.3 用純函數式實現帶狀態的API
6.4 狀態行為的更好的API
6.4.1 組合狀態行為
6.4.2 嵌套狀態行為
6.5 更通用的狀態行為數據類型
6.6 純函數式命令編程
6.7 小結
第二部分 功能設計和組合子庫
7 純函數式的並行計算
7.1 選擇數據類型和函數
7.1.1 一種用於並行計算的數據類型
7.1.2 組合併行計算
7.1.3 顯性分流
7.2 確定表現形式
7.3 完善API
7.4 API與代數
7.4.1 映射法則
7.4.2 分流法則
7.4.3 打破法則:一個微妙的bug
7.4.4 用Actor實現一個完全無阻塞的Par
7.5 完善組合子為更通用的形式
7.6 小結
8 基於性質的測試
8.1 基於性質測試概覽
8.2 選擇數據類型和函數
8.2.1 API的初始代碼片段
8.2.2 性質的含義與API
8.2.3 生成器的意義和API
8.2.4 生成值決定生成器
Reference demo_5
In stock 297 Items
Data sheet