iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

30 天的 Functional Programming 之旅 系列

「30 天的 Functional Programming 之旅」將用 JavaScript 帶領大家逐步探索 Functional Programming 的世界,系列內容結合《Grokking Simplicity》與《Mostly Adequate Guide》和其他網路資源,從程式中的三大元素 Action、Calculation、Data 出發,認識不可變性的價值,進而學習函數組合、柯里化、Functor、Monad、Applicative 等核心模式。希望透過這段旅程,不僅讓大家認識 FP 的工具,更能體會其中的設計哲學,並在日常開發中找到重構與思考程式的新角度。

參賽天數 24 天 | 共 24 篇文章 | 3 人訂閱 訂閱系列文 RSS系列文
DAY 1

[Day 01] 系列文動機與大綱

嗨大家好!我是 Monica,第一天一樣來講講系列文動機與大綱,談談未來的內容規劃。 關於分享主題 再次嘗試鐵人賽,這次的主題其實之前就想寫了,覺得 Func...

2025-09-15 ‧ 由 Monica 分享
DAY 2

[Day02] 什麼是 Functional Programming?

前言 「函數式程式設計 (Functional Programming,簡稱 FP)」這個名詞應該大部分人都聽過,通常會看到類似這樣的定義:「FP 是一種使用...

2025-09-16 ‧ 由 Monica 分享
DAY 3

[Day03] Actions、Calculations 與 Data

前言:Actions、Calculations 與 Data 在上篇文章有提到,FP 的重點是要管理因副作用而產生的程式碼複雜性,而要如何管理副作用造成的意外...

2025-09-17 ‧ 由 Monica 分享
DAY 4

[Day04] Pure Function 是什麼?

前言 在上篇文章中,我們學會將程式碼分為 Actions、Calculations 與 Data 三類,並理解到 Calculations 是我們程式中穩定、...

2025-09-18 ‧ 由 Monica 分享
DAY 5

[Day05] 不可變性(Immutability)

前言 在上一篇文章中,有提到純函數 (Pure Function) 的優點是可預測、易於測試、可推理,雖然實際應用中無法將全部程式碼轉為純函數,但我們可以盡可...

2025-09-19 ‧ 由 Monica 分享
DAY 6

[Day06] 重構程式:擷取 Actions 中的 Calculations

前言 不知道大家平常開發的時候,有沒有遇過這種狀況?一個看似正常的函式,當你試圖幫它撰寫單元測試時,卻發現需要模擬 API 資料、偽造 DOM、處理全域狀態....

2025-09-20 ‧ 由 Monica 分享
DAY 7

[Day 07] 分層設計 (Stratified Design)簡介

前言 上一篇提到如何抽取程式碼中的 Calculations 來重構一個複雜的函式,重構的原則是「最小化隱性輸入與輸出」,而今天要介紹的「分層設計(Strat...

2025-09-21 ‧ 由 Monica 分享
DAY 8

[Day 08] First-Class Functions 和 Higher-Order Functions (1):簡介與 forEach

前言 在上篇文章中,我們探討了如何透過分層設計(Stratified Design)來管理程式碼的複雜性。但如果我們能將程式中最核心的元素——「行為」本身——...

2025-09-22 ‧ 由 Monica 分享
DAY 9

[Day 09] First-Class Functions 和 Higher-Order Functions (2):map 與 reduce

前言 延續昨天介紹的 forEach 函式,今天要來介紹 map 和 reduce 這兩個函數式程式設計的核心工具~ map:陣列的變形工廠 map 是函數式...

2025-09-23 ‧ 由 Monica 分享
DAY 10

[Day 10] Currying(柯里化)簡介

前言 今天要介紹的是 Currying~ 在日常的軟體開發中,我們可能都寫過這樣的函式:它可能接受四、五個,甚至更多的參數。而在許多不同的呼叫場景中,其中好幾...

2025-09-24 ‧ 由 Monica 分享