iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
Software Development

用 Scala 3 寫的 Functional Programming 會長什麼樣子? 系列

有本書買很久了,卻始終沒機會讀完,或許這是個機會讓自己讀完它!

Functional Programming In Scala 是用 Scala 2 寫的,剛好我也只熟悉 Scala 2,所以就讓我們一邊分享 FP 的同時 ,一邊用 Scala 3 改寫它們吧,順便看看 Scala 3 多了哪些酷東西!

鐵人鍊成 | 共 30 篇文章 | 2 人訂閱 訂閱系列文 RSS系列文
DAY 21

能自由組合的解析器 Library (3)

如何處理有上下文關係的解析 想像一下若我們要解析開頭為數字,然後後面為 0 到 n 個字元 'a',以下的字串皆滿足此需求:0、1a、2aa、4aaaa, 但...

2023-09-21 ‧ 由 tshine73 分享
DAY 22

Monoids (1)

從今天開始要進入 Part 3 啦!Part 3 主要是 functional programming 下更高層的抽象,也就是說把之前各種主題下常看到的模式概念...

2023-09-22 ‧ 由 tshine73 分享
DAY 23

Monoids (2)

用 monoids folding List Monoid 跟 List 有著相當緊密的關係,Day 4 和 Day5 的 List 中我們有用到 2 個 fu...

2023-09-23 ‧ 由 tshine73 分享
DAY 24

Monoids (3)

Monoid 的同態 (homomorphisms) 直接看例子吧! "foo".length + "bar".leng...

2023-09-24 ‧ 由 tshine73 分享
DAY 25

Functors

讓我們繼續從之前的程式中抽象出更高層的東西吧!今天要講的介面是 Functor。 Functors - map 的抽象介面 從 Day 3 開始,每個主題下的...

2023-09-25 ‧ 由 tshine73 分享
DAY 26

Monads (1)

Monads - flatMap 和 unit 的抽象介面 在介紹 Monad 之前,先聊聊一個之前有在 Option 和 Parser 下用到的 functi...

2023-09-26 ‧ 由 tshine73 分享
DAY 27

Monads (2)

Monads 定律 1 - 結合律 (Associative Law) 假設我們有個 Item 和 Order 類別, case class Item(name...

2023-09-27 ‧ 由 tshine73 分享
DAY 28

Applicative Functors (1)

今天要介紹一個功能沒有 Monad 這麼強,但比較泛用的抽象介面,Applicative Functors, 在 Day 26 - Monads (1) 中,我...

2023-09-28 ‧ 由 tshine73 分享
DAY 29

Applicative Functors (2)

Monad 和 Applicative Functors 的差異 假設我們用 Option 來從 Map 資料中找東西,2 個查詢彼此獨立,通常可以輕鬆的用 m...

2023-09-29 ‧ 由 tshine73 分享
DAY 30

Applicative Functors (3)

Applicative Fuctor 定律 為求說明,以下回顧 Applicative Functor 的方法宣告會將所有參數完整呈現,故會與 Day 28...

2023-09-30 ‧ 由 tshine73 分享