iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

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

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

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

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

Day 11. fp-ts簡介與Array

今天到了系列文的第二階段,fp-ts的函式庫粉墨登! fp-ts 設計緣由 fp-ts的作者Giulio Canti利用Typescritp靜態型別系統,以及泛...

2025-09-11 ‧ 由 olddunk 分享
DAY 12

Day 12. 錯誤處理 - Option & Either

在數學上,有些函數在定義域的某些值會沒有定義,例如,當定義域是所有實數,函數f(x)=1/x,則f(0)是沒有意義。此時,我們會將x=0從我們的定義域剔除;然而...

2025-09-12 ‧ 由 olddunk 分享
DAY 13

Day 13. 隔空取物 - Applicative Functor

Applicative Functor 除了Array Functor,我們昨天又介紹了Option和Either Functor兩個Functor,要成為F...

2025-09-13 ‧ 由 olddunk 分享
DAY 14

Day 14. 化同存異 - Monad Functior

今天要介紹令人聞名喪膽的Monad Functor,因為名字聽起來就像怪獸一樣。 Monad 我們要先從Day12最後的例子說起,但是我們將Either修改成O...

2025-09-14 ‧ 由 olddunk 分享
DAY 15

Day 15. 輸出入處理 - IO & Do notation

雖然函數式程式設計一直強調純函數(Pure Function),不要有Side Effect;但是一個系統程式,不太可能不和使用者、資料庫、終端機…等真實世界接...

2025-09-15 ‧ 由 olddunk 分享
DAY 16

Day 16. 非同步工作 - Task & TaskEither

同步與非同步 Javascript是單執行緒(Single thread)的語言,也就是說,程式的執行是依照程式碼的順序按步就班的執行。單執行緒最大的困擾便是...

2025-09-16 ‧ 由 olddunk 分享
DAY 17

Day 17. 除錯 - trace & tap

除錯 - Tap 在函數式程式設計風格中,資料的串接通常利用pipe、flow或compose將函數式合成,因此程式開發人員比較難在「接管」(pipe)過程中...

2025-09-17 ‧ 由 olddunk 分享
DAY 18

Day 18. 自然轉換 - Natural Transformation

在函數式程式設計風格的編碼過程中,我們常常利用各種型別容器(Option、Either、…等型別類別)來放置我們實際要處理的值,再利用map、ap、flatMa...

2025-09-18 ‧ 由 olddunk 分享
DAY 19

Day 19. 函數型別容器 - Reader & State

Reader 在介紹 IO Functor時,IO<A>的型別便是由函數建構,本質上是一個無參數的函數,它的型別簽名(Type Signature...

2025-09-19 ‧ 由 olddunk 分享
DAY 20

Day 20. fp-ts綜合練習

綜合實例 模組匯入 因為匯入的模組和函數甚多,為了避免一個一個函數匯入過於冗長且易於撞名需另外改名,所以採取整個模組匯入的模式。 import * as O...

2025-09-20 ‧ 由 olddunk 分享