iT邦幫忙

functional programming相關文章
共有 352 則文章
鐵人賽 Software Development DAY 28

技術 27. Match: tag 與模式比對

這篇我們要來看 Effect 裡怎麼做模式比對,模式比對是我覺得一個非常方便的功能,如果有看過我之前寫的文章,你可能會知道我是個 Rust 的愛好者, Rust...

鐵人賽 Software Development DAY 27

技術 [Day 27] RxJS 簡介 (1)

前言 今天要介紹的是我期待已久的 RxJS! RxJS 博大精深,甚至可以用一整個鐵人賽系列文來介紹(在此推推 30 天精通 RxJS和打通 RxJS 任督二...

鐵人賽 Software Development DAY 27

技術 26. Effect schema:資料格式驗證

這篇要來介紹的是 Effect 內建的資料格式的驗證工具 Schema ,另外我之前也提到,我個人平常還是偏好使用 zod 這個老牌的格式驗證為主,這篇我們一起...

鐵人賽 Software Development DAY 26

技術 Ch 25. 用不同的角度來看待邏輯與資料

還記得我們在新手村裡學會這幾句話嗎: 程式主要可以分成邏輯(流程)與資料 函式 是把 邏輯(流程) 包起來的自動販賣機 而隨著愈來愈多人寫程式,在歷史發...

鐵人賽 Software Development DAY 26

技術 25. Effect 與 Observability

這篇要來介紹 Effect 與 Observability , Observability 中文叫可觀測性,意思是你的程式的執行的過程是可以被觀察的,特別是在分...

鐵人賽 Software Development DAY 25

技術 24. Effect logging

這篇來介紹的是在 Effect 裡面怎麼寫 log ,不知道各位平常有沒有習慣在寫 log ,如果程式有 log 的話,可以幫助我們了解程式現在的狀態,在除錯上...

鐵人賽 Software Development DAY 24

技術 [Day 24] Applicative Functor (2):定律與應用範例

前言 昨天認識了什麼是 Applicative,今天會再介紹 Applicative 要遵守的定律,以及更多應用範例~ Applicative 的定律 就像...

鐵人賽 Software Development DAY 24

技術 23. Effect 應用 2 :用 orpc 與 Effect 打造強韌的 API 介面

這篇要來看 Effect 在後端又可以怎麼樣的使用,這次我們會搭配 orpc 這個 RPC 的套件來一起使用, orpc 可以幫助我們寫出 type-safet...

鐵人賽 Software Development DAY 23

技術 [Day 23] Applicative Functor (1):應用被包裹的函數

前言 在前面的文章中,我們認識了 Functor 和 Monad。Functor 透過 map 方法,讓我們能將一個普通的函數應用到被包裹在 context(...

鐵人賽 Software Development DAY 23

技術 22. Effect 應用 1 : 如何在 React 中呼叫 Effect 的程式

這篇要來介紹怎麼在實際的環境中使用 Effect ,這次介紹的是在 React 中會怎麼使用,除了簡單的情境我們可以直接用 Efect.runPromise 外...

鐵人賽 Software Development DAY 22

技術 [Day 22] Monad 入門 (2):核心概念與定律

前言 在上一篇文章中,我們學會了 Monad 的實用工具 chain,它透過結合 map 和 join 來解決巢狀容器問題,讓我們的函數組合保持流暢。今天會再...

鐵人賽 Software Development DAY 22

技術 21. Effect runtime :自訂如何執行 effect

這邊要來講的是 Effect 的 runtime ,不要懷疑,就是執行 Effect 的 fiber 的那個runtime ,你可能會覺得這有什麼好講的,我們平...

鐵人賽 Software Development DAY 21

技術 [Day 21] Monad 入門 (1):撫平巢狀的洋蔥

前言 在過去幾篇文章中,我們認識了 Functor 這個 FP 工具,透過 .map,我們學會了如何在一個「容器」或「上下文 (context)」內,對值進行...

鐵人賽 Software Development DAY 20

技術 [Day 20] Task:處理非同步副作用

前言 昨天的文章中,我們認識了如何用 IO 這容器延後副作用的執行,掌握了 IO 的核心思想後,我們就可以將同樣的原則應用到一個更複雜、更常見的領域:非同步操...

鐵人賽 Software Development DAY 21

技術 20. Effect 資源管理與作用域

這篇來要講個我個人認為挺有趣的東西,資源管理,一般如果是在前端,需要資源管理的情況可能比較沒有那麼多,因為網頁重整了就什麼都沒了,這可能是後端會比較需要的,不過...

鐵人賽 Software Development DAY 20

技術 19. Effect 實戰分享 4: 取得看版資料

這次要來分享的是之前實作過的一個比較複雜的介面:看版,以及在裡面我們是如何用 Effect 協助我們取得資料的 什麼是看版 (圖片來源 wiki) 如果你平常有...

鐵人賽 Software Development DAY 19

技術 [Day 19] IO:處理同步副作用

前言 在前幾天的文章中,我們學會如何用 Maybe 容器處理空值,用 Either 容器處理錯誤路徑,透過容器這種把值包起來的方式,我們可以打造可預測、可靠的...

鐵人賽 Software Development DAY 19

技術 18. Request and batching

這篇我們要來看 Effect 中如何做到 batch request ,但為什麼我們會需要 batch request 呢?我之前正好有寫過類似的文章,有興趣的...

鐵人賽 Software Development DAY 18

技術 [Day 18] Either Functor:處理錯誤

前言 在上一篇 Maybe Functor 的文章中,可以看到 Maybe 讓我們的程式不會因為 null 或 undefined 而出錯、管線斷裂,即使物件...

鐵人賽 Software Development DAY 18

技術 17. Effect 的 concurrency 調度器: Fiber 簡介

這篇我們要來看 Effect 是怎麼調度我們的程式的執行流程的,如果你之前有碰過一些比較偏向系統程式的東西,你可能會知道, fiber 指的是協程,意即一種需要...

鐵人賽 Software Development DAY 17

技術 [Day 17] Maybe Functor:處理空值

前言 上一篇文章介紹了 Functor:它是一個容器,包裹著一個值,並提供一個 map 方法,讓我們能可靠地對這個值套用函式,無論它究竟是什麼。但如果我們處理...

鐵人賽 Software Development DAY 17

技術 16. 再看 concurrency:使用 fork 在背景執行

這篇要來稍微看一下 Effect 到底是如何實作的,同時我們會先來看到,如何在「背景」執行 Effect Effect.fork 先來看今天的主角, Effec...

鐵人賽 Software Development DAY 16

技術 [Day 16] Functor:操作容器內的值

前言 上一篇我們初步認識了 Monoid,學到「組合」其實是程式設計裡無處不在的基礎結構。 現在回到 Day 14 提過的容器,透過將值(value)包裝在一...

鐵人賽 Software Development DAY 16

技術 15. Effect 實戰分享 3: 資料遷移

這篇要來分享的是之前將 Effect 用在資料遷移的經驗,其實這篇就是「8. Effect 實戰分享 1 :資料清理」的後續,稍微前情提要一下,你拿到了一個老舊...

鐵人賽 Software Development DAY 15

技術 [Day 15] 初探 Monoid:組合的力量

前言 在上一篇初探容器的文章中,留下了一個問題:當面對一組值時,要如何找到一種通用的模式,能可靠地將它們組合為一? 在解答問題之前,先來看看一個更普遍的觀念—...

鐵人賽 Software Development DAY 14

技術 [Day 14] 初探容器 (Container)

前言 今天要介紹的是 Container (容器),這會是後續 Functor、Monad、Applicative 概念的基礎。 在之前的文章中,我們學習到...

鐵人賽 Software Development DAY 14

技術 13. 如何測試 Effect 的程式

這篇我們要來幫 Effect 的程式寫測試,現在寫測試大家應該都是以 vitest 為主了吧,我們就來用 vitest 吧,若你平常有在寫測試,像這樣的測試應該...

鐵人賽 Software Development DAY 13

技術 [Day 13] 函數的語言:型別簽章(Type Signature)簡介

前言 在上一篇文章中,我們介紹了 const toSlug = pipe(trim, toLowerCase, replaceSpaces, removeEx...

鐵人賽 Software Development DAY 13

技術 12. Effect 的實戰分享 2:簡易爬蟲

這篇要來介紹怎麼使用 Effect 做個簡單的爬蟲,雖說是簡易的爬蟲,但我們要來做一個 「好」爬蟲,代表我們不會送一堆的請求到伺服器,會加上延遲等等,如果可以做...

鐵人賽 Software Development DAY 12

技術 [Day 12] Point-Free 是什麼?

前言 在上一篇文章中,我們介紹了「函數組合(Function Composition)」,透過把多個小函數拼接起來,我們能寫出更具模組化與表達力的程式。而今天...