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 1

混天數用的前言

用 Scala 3 寫的 Functional Programming 會長什麼樣子? Functional Programming,三大設計範示之一,其開發思...

2023-09-01 ‧ 由 tshine73 分享
DAY 2

什麼是 Functional Programming?

什麼是 Functional Programming? 簡言之就是沒有 side effect (副作用) 的 function,也就是一種純粹無暇的沒有副作用...

2023-09-02 ‧ 由 tshine73 分享
DAY 3

Functional 資料結構 (1)

Day 3 - Functional 資料結構 (1) functional 資料結構 (functional data structure) 就是只使用 pu...

2023-09-03 ‧ 由 tshine73 分享
DAY 4

Functional 資料結構 (2)

在 Functional 資料結構中的資料分享 當資料為不可變的情況下,可以的話我們會希望能夠重用所有資料,盡量減少複製情況發生,就稱做 資料分享 (data...

2023-09-04 ‧ 由 tshine73 分享
DAY 5

Functional 資料結構 (3)

更多的練習 Exercise D5-1 前一天 的 foldRight 是從 List 的最右邊往左推進,想當然爾,當然也有從左邊開始的 foldLeft, 也...

2023-09-05 ‧ 由 tshine73 分享
DAY 6

如何不拋出例外的處理錯誤 (1)

我們在 Day 2 - 什麼是 Funcational Programming? 有提到拋出 exception 是某種 side effect ,倘若 exc...

2023-09-06 ‧ 由 tshine73 分享
DAY 7

如何不拋出例外的處理錯誤 (2)

Option 資料型態 enum Option[+A]: case Some(get: A) case None 昨天 那些瞎 g8 問題的解法就是讓...

2023-09-07 ‧ 由 tshine73 分享
DAY 8

如何不拋出例外的處理錯誤 (3)

該怎麼讓舊的 function 兼容 Option (Either 也適用) 也許你用的 function 在很多地方都用到,改變原 function 的定義影...

2023-09-08 ‧ 由 tshine73 分享
DAY 9

Strictness 和 Laziness (1)

想像一下你想要使用 List 來做一系列的資料操作, scala> List(1, 2, 3, 4).map(_ + 10).filter(_ % 2 =...

2023-09-09 ‧ 由 tshine73 分享
DAY 10

Strictness 和 Laziness (2)

現在來看一下如何解決一下 昨天 所提到的問題:將所有轉換一次處理,避免建立暫時用的 List。 LazyList LazyList 就是 List lazine...

2023-09-10 ‧ 由 tshine73 分享