Functor 用最簡單的一句話來解釋 functor 就是指可以被 map 的東西像是 List ,而在 Haskell functor 就只是 typecl...
Typeclass 讓我們重新回顧一下 typeclass 是什麼,它類似於其他語言中的介面(interface)。Typeclass 提供了一種定義一組類別所...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-14 並且有習題和測試可以讓大家練習。...
Monad 和 Applicative Functors 的差異 假設我們用 Option 來從 Map 資料中找東西,2 個查詢彼此獨立,通常可以輕鬆的用 m...
Recursive Data Type 我們除了裡用 product 或者 sum 來組成的我們 type 以外,還可以使用 recursive 的概念來定義...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-13 並且有習題和測試可以讓大家練習。...
今天要介紹一個功能沒有 Monad 這麼強,但比較泛用的抽象介面,Applicative Functors, 在 Day 26 - Monads (1) 中,我...
Sum Type 我們先來看一下 Bool 在 Haskell 是如何被定義的 data Bool = False | True deriving (Read...
Monads 定律 1 - 結合律 (Associative Law) 假設我們有個 Item 和 Order 類別, case class Item(name...
Monads - flatMap 和 unit 的抽象介面 在介紹 Monad 之前,先聊聊一個之前有在 Option 和 Parser 下用到的 functi...
剛學js的時候,常常會看到自己難以理解的東西,比如說這個: function add(a) { return function (b) { retu...
昨天我們說到可以使用 tuple (Double, Double, Double) 用三個double來表示三角形的三邊長。 但我們使用 tuple 來描述的話...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-10 並且有習題和測試可以讓大家練習。...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-12 並且有習題和測試可以讓大家練習。...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-11 並且有習題和測試可以讓大家練習。...
讓我們繼續從之前的程式中抽象出更高層的東西吧!今天要講的介面是 Functor。 Functors - map 的抽象介面 從 Day 3 開始,每個主題下的...
Monoid 的同態 (homomorphisms) 直接看例子吧! "foo".length + "bar".leng...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-09 並且有習題和測試可以讓大家練習。...
今天要來介紹一個在 FP 中相當常見的特性 lazy evaluation (惰性求值) ,簡單來說就是當需要值的時候才會真正把值計算出來。 lazy eval...
Fold 所謂 Fold 就是來簡化我們在遞迴中很常遇到的模式,匹配 (x:xs) 將 x 取出來後繼續將 xs 放入 function 運算 直到 [] 。通...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-08 並且有習題和測試可以讓大家練習。...
用 monoids folding List Monoid 跟 List 有著相當緊密的關係,Day 4 和 Day5 的 List 中我們有用到 2 個 fu...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-07 並且有習題和測試可以讓大家練習。...
從今天開始要進入 Part 3 啦!Part 3 主要是 functional programming 下更高層的抽象,也就是說把之前各種主題下常看到的模式概念...
Filter filter 是傳入一個會回傳 Bool 的 function 及 List,然後將 List 中每個元素丟進去 function 最後回傳所有執...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-06 並且有習題和測試可以讓大家練習。...
如何處理有上下文關係的解析 想像一下若我們要解析開頭為數字,然後後面為 0 到 n 個字元 'a',以下的字串皆滿足此需求:0、1a、2aa、4aaaa, 但...
終於來到一個跟 FP 的核心概念有關的特性了,首先我們需要知道 Haskell 是具有 First-class function 這個特性,意思是指 func...
在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-05 並且有習題和測試可以讓大家練習。...
從重複辨識找到第一個正式定律 繼續 昨天 的定律推敲,首先來想一下如何辨識 0 到 n 次的字元 'a', def many[A](p: Parser[A]):...