iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

數學老師學函數式程式設計 - 以fp-ts啟航 系列

本系列將分享個人以fp-ts學習函數式程式設計(Functional Programming,簡稱FP)的心得整理,以Typescript和fp-ts出發,由淺而深介紹FP的基礎觀念和不同的進階型別建構模組,期待能讓無需任何基礎者可以重頭學習函數式程式設計的觀念與技巧,並期待將來可以輕鬆轉換至Haskell這種專函數式程式設計的程式語言。

除了程式觀念和語言的學習,也希望這個系列能讓讀者了解抽象化數學的意義和重要性,希望讓數學的學習具備更多的意義和目標。

鐵人鍊成 | 共 30 篇文章 | 3 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21. Contravariant Functor - Eq & Ord

今天我們要開始介紹類別(Type Class)型的模組,類別模組內的函數比較少,不同的類別代表不同的數學概念。首先登場的是Eq和Ord兩個關係的類別。 Eq 一...

2025-09-21 ‧ 由 olddunk 分享
DAY 22

Day 22. ADT-Algebraic Data Type

Algebraic Data Type 現代代數最重要的工作便是將一些代數性質抽象化,而代數中最重要的就是運算,我們今天就要討論運算抽象化這個主題。數字中最常...

2025-09-22 ‧ 由 olddunk 分享
DAY 23

Day 23. 時空穿越 - Traverse & Sequence

現在戲劇流行穿越劇,在FP的世界裏也可以進行型別容器的穿越,也就是改變容器嵌套的次序,擁有這種特性的型別容器我們稱之為Traversable。當遇到容器型別互相...

2025-09-23 ‧ 由 olddunk 分享
DAY 24

Day 24. 高階類別 - Higher Kinded Types(HKT)

在現代代數的系統裏,最重要的工作便是把不同的結構(元素與運算)抽象化出來而進行定義,再以此抽象化的結構,推導其相關定理,在往後的日子裏,只有要新的結構滿足結構的...

2025-09-24 ‧ 由 olddunk 分享
DAY 25

Day 25. 打造自己的Monad

今天要從頭開始打造一個Monad類別的Response模組,將各類別的定義複習一次,以後再看到這些FP的類別名詞時就不會再陌生。 定義 依照昨天的內容定義常數U...

2025-09-25 ‧ 由 olddunk 分享
DAY 26

Day 26. Comonad - Tree

今天要介紹fp-ts/Tree模組。 Tree 樹是一種常見的圖形,由節點(node)和邊(edge)構成,樹會有一個根節點,根節點連著0或多棵子樹,因此樹的資...

2025-09-26 ‧ 由 olddunk 分享
DAY 27

Day 27. Zipper

在研讀Learn You a Haskell for Great Good這本書的時候,作者介紹了Zipper這個有趣的資料結構,今天要用fp-ts來實作其中的...

2025-09-27 ‧ 由 olddunk 分享
DAY 28

Day 28. 生命遊戲 - Store

使用Comonad類別的時機在於新值的產生要利用上下文的內容,生命遊戲裏,每個細胞的生與死由周圍細胞的活著個數決定;而影像處理在進行影像強化、影像模糊…等影像轉...

2025-09-28 ‧ 由 olddunk 分享
DAY 29

Day 29. 單元測試 - Vitest

由於函數式程式設計要求純函數(Pure function),因為純函數的行為確定,因此FP的優點之一便是易於測試,今天就介紹軟體測試中最基本的單元測試(Unit...

2025-09-29 ‧ 由 olddunk 分享
DAY 30

Day 30. 啟程fp-ts - 轉進Haskell

終於到了鐵人賽的最後一天了,好好回顧這三十天的歷程和內容。 起程FP-TS 一開始會選擇fp-ts當作函數式程式設計的起點當然是因為從事網頁的開發,當對函數式程...

2025-09-30 ‧ 由 olddunk 分享