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 11

Strictness 和 Laziness (3)

LazyList 細部處理拆解 講進階用法之前,先來看一下 LazyList 是怎麼處理 LazyList(1, 2, 3, 4).map(_ + 10).fi...

2023-09-11 ‧ 由 tshine73 分享
DAY 12

純粹的 functional 狀態 (1)

這幾天會使用 隨機數字產生器 來介紹 functional programming 如何操作狀態變更,我們就能學會如何讓那些有狀態的程式純粹化,進而符合 Ref...

2023-09-12 ‧ 由 tshine73 分享
DAY 13

純粹的 functional 狀態 (2)

更多的練習 Exercise D13-1 用 RNG.nextInt 來產生非負的隨機數,範圍介於 0 <= r <= Int.maxValue。...

2023-09-13 ‧ 由 tshine73 分享
DAY 14

純粹的 functional 狀態 (3)

對最初的 rollDie function 有什麼影響 延續 昨天 最後設計的產生非負數且小於特定值的隨機數 nonNegativeLessThanViaFla...

2023-09-14 ‧ 由 tshine73 分享
DAY 15

Purely Function 的平行化 (1)

拜 摩爾定律 所賜,現在的計算資源越來越強,有越來越多的程式可以分散地、平行化 (parallelism) 的運行,平行運行下的程式勢必會遇到諸如 race c...

2023-09-15 ‧ 由 tshine73 分享
DAY 16

Purely Function 的平行化 (2)

統整一下 Par 容器型態的 function 經過 昨天 的推導,我們的平行化 library 中定義了 Par[A] 容器型態,然後核心 API 中包含了以...

2023-09-16 ‧ 由 tshine73 分享
DAY 17

Purely Function 的平行化 (3)

持續精煉我們的核心 API 讓我們開始實作其他核心 API 吧!以下為完整程式: import java.util.concurrent.* object P...

2023-09-17 ‧ 由 tshine73 分享
DAY 18

Purely Function 的平行化 (4)

API 的代數性質 在 API 實作過程中,我們都是先把 function 的型態定義好,然後在隨著型態去實現它,例如 map 就是用了 map2 和 unit...

2023-09-18 ‧ 由 tshine73 分享
DAY 19

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

解析器就是個能把 JSON 或 XML 等字串轉為 list、 map 等資料結構, 而這幾天就要用 functional programming 的概念來設計...

2023-09-19 ‧ 由 tshine73 分享
DAY 20

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

從重複辨識找到第一個正式定律 繼續 昨天 的定律推敲,首先來想一下如何辨識 0 到 n 次的字元 'a', def many[A](p: Parser[A]):...

2023-09-20 ‧ 由 tshine73 分享