iT邦幫忙

functional programming相關文章
共有 294 則文章
鐵人賽 Software Development DAY 19

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

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

鐵人賽 Software Development DAY 3
Should I use fp-ts 系列 第 3

技術 [Should I use fp-ts?] Day 03 - pure function

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-03。本系列文的目的是讓讀者 和筆者 能...

鐵人賽 Software Development DAY 18

技術 Purely Function 的平行化 (4)

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

鐵人賽 Software Development DAY 17

技術 Purely Function 的平行化 (3)

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

鐵人賽 Software Development DAY 16

技術 Purely Function 的平行化 (2)

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

鐵人賽 Software Development DAY 1
Should I use fp-ts 系列 第 1

技術 [Should I use fp-ts?] Day 01 - 前言

筆者背景 大家好,我是 Tuhacrt (吐哈庫)。 我是今年(2023)六月才剛成為軟體工程師的菜鳥工程師,有一次跟前輩在 debug 的途中討論到 Func...

鐵人賽 Software Development DAY 15

技術 Purely Function 的平行化 (1)

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

鐵人賽 Software Development DAY 14

技術 純粹的 functional 狀態 (3)

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

鐵人賽 Software Development DAY 13

技術 純粹的 functional 狀態 (2)

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

鐵人賽 Software Development DAY 12

技術 純粹的 functional 狀態 (1)

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

鐵人賽 Software Development DAY 11

技術 Strictness 和 Laziness (3)

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

鐵人賽 Software Development DAY 10

技術 Strictness 和 Laziness (2)

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

鐵人賽 Software Development DAY 9

技術 Strictness 和 Laziness (1)

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

鐵人賽 Software Development DAY 8

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

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

鐵人賽 Software Development DAY 7

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

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

鐵人賽 Software Development DAY 6

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

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

鐵人賽 Software Development DAY 5

技術 Functional 資料結構 (3)

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

鐵人賽 Software Development DAY 4

技術 Functional 資料結構 (2)

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

鐵人賽 Software Development DAY 3

技術 Functional 資料結構 (1)

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

鐵人賽 Software Development DAY 2

技術 什麼是 Functional Programming?

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

鐵人賽 Software Development DAY 1

技術 混天數用的前言

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

鐵人賽 Modern Web DAY 29

技術 Day 29 :總結 & 那些未完待續的 FP

在文章系列的尾聲,我們大致複習一下究竟什麼是 FP 呢?先前我們曾經提到過,透過 FP 設計模式產出的程式碼會有以下特色: 透過純函數(Pure Functi...

鐵人賽 Modern Web DAY 28

技術 Day 28 :第三方函式庫 (3):從 Ramda.js 深入了解 JavaScript

與 Lodash.js 類似, Ramda.js 是一個專門以 FP 模式設計出來的函式庫,與 Lodash 不同的是,Ramda 所提供的函式預設就已經柯里化...

鐵人賽 Modern Web DAY 27

技術 Day 27 :第三方函式庫(2):從 Lodash.js 深入了解 JavaScript

Lodash 這個函式庫中,提供了高達上百種的方法,有些方法可以說是原生 JavaScript 的加強版,或是將原有的原型方法包裝成純函式。 除了在實務開發時,...

鐵人賽 Modern Web DAY 26

技術 Day 26 :第三方函式庫(1):初識Lodash.js

在先前的章節中,我們了解到要如撰寫純函式、科里化,甚至是透過高階函式與複合函式的手段,讓我們的函式重組性、復用性更高。 但如果到目前為止,這些概念對於你來說,都...

鐵人賽 Modern Web DAY 25

技術 Day 25:高階函數與複合函數(3):reduce 實用方法

在 FP 中,會發現我們其實沒有那麼常使用 for、forEach ,更多時候是使用 filter 與 map 陣列方法,因為在 FP 這個設計模式中,為了讓程...

鐵人賽 Software Development DAY 13
大閘蟹料理指南(rust) 系列 第 13

技術 [D13] Functional Programming in Rust

Functional Programming 寫在如何使用 functional programming(之後都簡稱FP)之前, 我們得先來看看為什麼我們要這樣...

鐵人賽 Modern Web DAY 24

技術 Day 24:高階函數與複合函數(2):科里化陣列方法

陣列方法可以說是 JavaScript 中最常使用的計算工具,不論是資料的處理,或是畫面的呈現,都少不了陣列方法。 在了解高階函式與複合函式的概念後,我們來試著...

鐵人賽 Modern Web DAY 23

技術 Day 23 :高階函數與複合函數(1):進階的函數應用

在先前的章節中,我們透過不同的工具及概念來讓大家理解 FP 在做些什麼事,舉例來說,在 Immutable 的章節我們大量使用 map 與 filter 的方法...

鐵人賽 Modern Web DAY 22

技術 Day 22 :什麼是 Currying(4)?自己動手寫一個 Curry 吧!

在先前的文章中,我們花了很多的時間來討論閉包,這是為什麼呢?因為在 FP 中,如果我們想要更有效率、更嚴謹的方法來撰寫函式,了解函式在呼叫堆疊中的運行模式可以說...