新到貨2本75折
Scala函數式編程
(0)

Scala函數式編程

  • 定價:414
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

函數式編程(FP)是一種軟件開發風格,它注重不依賴於編程狀態的函數。函數式代碼易於測試和復用,容易實現並發,且不容易受到bug的攻擊。Scala是一種能很好支持函數式編程的新興JVM語言。

本書是針對希望學習FP並將它應用於日常編碼中的程序員而寫的,包括:函數式編程的概念;函數式編程相關的各種”為什麼」和”怎麼做」;如何編寫多核程序;練習和檢測。
 

目錄

原推薦序
序言
致謝
關於本書
第一部分函數式編程介紹
1什麼是函數式編程
1.1函數式編程的好處:一個簡單的例子
1.1.1一段帶有副作用的程序
1.1.2函數式的解法:去除副作用
1.2(純)函數究竟是什麼
1.3引用透明、純粹度以及替代模型
1.4小結
2在Scala中使用函數式編程
2.1Scala語言介紹:
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.3Option數據類型
4.3.1Option的使用模式
4.3.2Option的組合、提升及對面向異常的API的包裝
4.4Either數據類型
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.4API與代數
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.1API的初始代碼片段
8.2.2性質的含義與API
8.2.3生成器的意義和API
8.2.4生成值決定生成器
8.2.5精煉Prop的數據類型
8.3最小化測試用例
8.4使用庫並改進其易用性
8.4.1一些簡單的例子
8.4.2為並行計算編寫測試套件
8.5測試高階函數及展望未來
8.6生成器法則
8.7小結
9語法分析器組合子
9.1代數設計,走起
9.2一種可能的代數
9.2.1切片和非空重復
9.3處理上下文的相關性
9.4寫一個JSON分析器
9.4.1JSON格式
9.4.2JSON分析器
9.5錯誤提示
9.5.1一種可行的設計
9.5.2錯誤嵌套
9.5.3控制分支和回溯軌跡
9.6實現代數
9.6.1一種可能的實現
9.6.2串化分析器
9.6.3標記分析器
9.6.4故障轉移和回溯
9.6.5上下文相關的分析
9.7小結
第三部分函數設計的通用結構
10Monoid
10.1什麼是monoid
10.2使用monoid折疊列表
10.3結合律和並行化
10.4例子:並行解析
10.5可折疊數據結構
10.6組合monoid
10.6.1組裝更加復雜的monoid
10.6.2使用組合的monoid融合多個遍歷
10.7小結
11Monad
11.1函子:對map函數的泛化
11.1.1函子法則
11.2Monad:對flatMap和unit函數的泛化
11.3Monadic組合子
11.4單子定律
11.4.1結合法則
11.4.2為指定的monad證明結合法則
11.4.3單位元法則
11.5什麼是monad
11.5.1identity monad
11.5.2狀態monad和partial type application
11.6小結
12可應用和可遍歷函子
12.1泛化單子
12.2Applicative trait
12.3單子與可應用函子的區別
12.3.1對比Option applicative與Option monad
12.3.2對比Parser applicative與Parser monad
12.4可應用函子的優勢
12.4.1不是所有的可應用函子都是Monad
12.5可應用法則
12.5.1Left and right identity
12.5.2結合律
12.5.3Naturality of product
12.6可遍歷函子
12.7使用Traverse
12.7.1從monoid到可應用函子
12.7.2帶狀態的遍歷
12.7.3組合可遍歷結構
12.7.4遍歷融合
12.7.5嵌套遍歷
12.7.6Monad組合
12.8小結
第四部分作用與I/O
13外部作用和I/O
13.1分解作用13.2一個簡單的IO類型
13.2.1處理輸入效果
13.2.2簡單IO類型的優缺點
13.3避免棧溢出
13.3.1將一個控制流轉化為數據構造子
13.3.2Trampolining:棧溢出的通用解決方法
13.4一個更微妙的IO類型
13.4.1合理的monad
13.4.2一個支持控制台I/O的monad
13.4.3純解釋器
13.5非阻塞和異步I/O
13.6一個通用的IO類型
13.6.1最終的main程序
13.7為什麼IO類型不足以支撐流式I/O
13.8小結
14本地影響和可變狀態
14.1純函數式的可變狀態
14.2一種限制副作用范圍的數據類型
14.2.1受限可變性的語言表達
14.2.2一種可變引用的代數表達
14.2.3執行修改狀態的行為
14.2.4可變數組
14.2.5一個純函數的in—place快排實現
14.3純粹是相對於上下文的
14.3.1副作用是什麼?
14.4小結
15流式處理與增量I/O
15.1命令式I/O的問題示例
15.2一個簡單的流轉換器
15.2.1創建Process
15.2.2組合和追加處理
15.2.3處理文件
15.3可擴展的處理類型
15.3.1來源
15.3.2保證資源安全
15.3.3單一輸入過程
15.3.4多個輸入流
15.3.5去向
15.3.6Effectful通道
15.3.7動態資源分配
15.4應用場景
15.5小結
 

詳細資料

  • ISBN:9787121283307
  • 規格:245頁 / 普通級 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【自然科普、電腦資訊】AI時代的職場生存術:打開職場新思維,打造新世代職場競爭力,電子書85折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約21~30個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 古籍精選3本72折
  • 南派三叔新作
  • 百大2本75折