本系列將分享個人以fp-ts學習函數式程式設計(Functional Programming,簡稱FP)的心得整理,以Typescript和fp-ts出發,由淺而深介紹FP的基礎觀念和不同的進階型別建構模組,期待能讓無需任何基礎者可以重頭學習函數式程式設計的觀念與技巧,並期待將來可以輕鬆轉換至Haskell這種專函數式程式設計的程式語言。
除了程式觀念和語言的學習,也希望這個系列能讓讀者了解抽象化數學的意義和重要性,希望讓數學的學習具備更多的意義和目標。
今天到了系列文的第二階段,fp-ts的函式庫粉墨登! fp-ts 設計緣由 fp-ts的作者Giulio Canti利用Typescritp靜態型別系統,以及泛...
在數學上,有些函數在定義域的某些值會沒有定義,例如,當定義域是所有實數,函數f(x)=1/x,則f(0)是沒有意義。此時,我們會將x=0從我們的定義域剔除;然而...
Applicative Functor 除了Array Functor,我們昨天又介紹了Option和Either Functor兩個Functor,要成為F...
今天要介紹令人聞名喪膽的Monad Functor,因為名字聽起來就像怪獸一樣。 Monad 我們要先從Day12最後的例子說起,但是我們將Either修改成O...
雖然函數式程式設計一直強調純函數(Pure Function),不要有Side Effect;但是一個系統程式,不太可能不和使用者、資料庫、終端機…等真實世界接...
同步與非同步 Javascript是單執行緒(Single thread)的語言,也就是說,程式的執行是依照程式碼的順序按步就班的執行。單執行緒最大的困擾便是...
除錯 - Tap 在函數式程式設計風格中,資料的串接通常利用pipe、flow或compose將函數式合成,因此程式開發人員比較難在「接管」(pipe)過程中...
在函數式程式設計風格的編碼過程中,我們常常利用各種型別容器(Option、Either、…等型別類別)來放置我們實際要處理的值,再利用map、ap、flatMa...
Reader 在介紹 IO Functor時,IO<A>的型別便是由函數建構,本質上是一個無參數的函數,它的型別簽名(Type Signature...
綜合實例 模組匯入 因為匯入的模組和函數甚多,為了避免一個一個函數匯入過於冗長且易於撞名需另外改名,所以採取整個模組匯入的模式。 import * as O...