解析器就是個能把 JSON 或 XML 等字串轉為 list、 map 等資料結構, 而這幾天就要用 functional programming 的概念來設計...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-03。本系列文的目的是讓讀者 和筆者 能...
API 的代數性質 在 API 實作過程中,我們都是先把 function 的型態定義好,然後在隨著型態去實現它,例如 map 就是用了 map2 和 unit...
持續精煉我們的核心 API 讓我們開始實作其他核心 API 吧!以下為完整程式: import java.util.concurrent.* object P...
統整一下 Par 容器型態的 function 經過 昨天 的推導,我們的平行化 library 中定義了 Par[A] 容器型態,然後核心 API 中包含了以...
筆者背景 大家好,我是 Tuhacrt (吐哈庫)。 我是今年(2023)六月才剛成為軟體工程師的菜鳥工程師,有一次跟前輩在 debug 的途中討論到 Func...
拜 摩爾定律 所賜,現在的計算資源越來越強,有越來越多的程式可以分散地、平行化 (parallelism) 的運行,平行運行下的程式勢必會遇到諸如 race c...
對最初的 rollDie function 有什麼影響 延續 昨天 最後設計的產生非負數且小於特定值的隨機數 nonNegativeLessThanViaFla...
更多的練習 Exercise D13-1 用 RNG.nextInt 來產生非負的隨機數,範圍介於 0 <= r <= Int.maxValue。...
這幾天會使用 隨機數字產生器 來介紹 functional programming 如何操作狀態變更,我們就能學會如何讓那些有狀態的程式純粹化,進而符合 Ref...
LazyList 細部處理拆解 講進階用法之前,先來看一下 LazyList 是怎麼處理 LazyList(1, 2, 3, 4).map(_ + 10).fi...
現在來看一下如何解決一下 昨天 所提到的問題:將所有轉換一次處理,避免建立暫時用的 List。 LazyList LazyList 就是 List lazine...
想像一下你想要使用 List 來做一系列的資料操作, scala> List(1, 2, 3, 4).map(_ + 10).filter(_ % 2 =...
該怎麼讓舊的 function 兼容 Option (Either 也適用) 也許你用的 function 在很多地方都用到,改變原 function 的定義影...
Option 資料型態 enum Option[+A]: case Some(get: A) case None 昨天 那些瞎 g8 問題的解法就是讓...
我們在 Day 2 - 什麼是 Funcational Programming? 有提到拋出 exception 是某種 side effect ,倘若 exc...
更多的練習 Exercise D5-1 前一天 的 foldRight 是從 List 的最右邊往左推進,想當然爾,當然也有從左邊開始的 foldLeft, 也...
在 Functional 資料結構中的資料分享 當資料為不可變的情況下,可以的話我們會希望能夠重用所有資料,盡量減少複製情況發生,就稱做 資料分享 (data...
Day 3 - Functional 資料結構 (1) functional 資料結構 (functional data structure) 就是只使用 pu...
什麼是 Functional Programming? 簡言之就是沒有 side effect (副作用) 的 function,也就是一種純粹無暇的沒有副作用...
用 Scala 3 寫的 Functional Programming 會長什麼樣子? Functional Programming,三大設計範示之一,其開發思...
在文章系列的尾聲,我們大致複習一下究竟什麼是 FP 呢?先前我們曾經提到過,透過 FP 設計模式產出的程式碼會有以下特色: 透過純函數(Pure Functi...
與 Lodash.js 類似, Ramda.js 是一個專門以 FP 模式設計出來的函式庫,與 Lodash 不同的是,Ramda 所提供的函式預設就已經柯里化...
Lodash 這個函式庫中,提供了高達上百種的方法,有些方法可以說是原生 JavaScript 的加強版,或是將原有的原型方法包裝成純函式。 除了在實務開發時,...
在先前的章節中,我們了解到要如撰寫純函式、科里化,甚至是透過高階函式與複合函式的手段,讓我們的函式重組性、復用性更高。 但如果到目前為止,這些概念對於你來說,都...
在 FP 中,會發現我們其實沒有那麼常使用 for、forEach ,更多時候是使用 filter 與 map 陣列方法,因為在 FP 這個設計模式中,為了讓程...
Functional Programming 寫在如何使用 functional programming(之後都簡稱FP)之前, 我們得先來看看為什麼我們要這樣...
陣列方法可以說是 JavaScript 中最常使用的計算工具,不論是資料的處理,或是畫面的呈現,都少不了陣列方法。 在了解高階函式與複合函式的概念後,我們來試著...
在先前的章節中,我們透過不同的工具及概念來讓大家理解 FP 在做些什麼事,舉例來說,在 Immutable 的章節我們大量使用 map 與 filter 的方法...
在先前的文章中,我們花了很多的時間來討論閉包,這是為什麼呢?因為在 FP 中,如果我們想要更有效率、更嚴謹的方法來撰寫函式,了解函式在呼叫堆疊中的運行模式可以說...