Free Monad?
1.
#Functor 要支援 fmap
#Applicative 要支援 fmap|pure|<*>
#Monad 要支援 fmap|pure|<*>|>>=
可以看到越強的 typeclass,約束越大。
有沒有一個載體 M,可以讓你只有支援 fmap 的 Functor f。擺進去之後,M f 也可以有 Monad 的能力?
讓你的 Functor f,免費地(free) 獲得 Monad 的能力?
這個神祕的載體 M,就是 Free Monad。
2. 文章有提到一個 FreeMonad 的實作。是將 FreeMonad 以 List 遞迴的結構來建構。
`M f` 的 fmap|pure|>>=,可以只靠 (1) `M f` 本身的結構 加上 (2) f 的 fmap 來組裝起來。
3. 用到 M 的結構,來取代 f 要成爲 Monad 所需要的約束。
那麼你對 M f 的操作,都要繞一下 M 的結構,才能達到。 像是 Code 的 type 複雜度越來越複雜,後面的例子都看不懂了XD
#FP筆記 #Functor #Applicative #monad
Free Monad?
1.
#Functor 要支援 fmap
#Applicative 要支援 fmap|pure|<*>
#Monad 要支援 fmap|pure|<*>|>>=
可以看到越強的 typeclass,約束越大。
有沒有一個載體 M,可以讓你只有支援 fmap 的 Functor f。擺進去之後,M f 也可以有 Monad 的能力?
讓你的 Functor f,免費地(free) 獲得 Monad 的能力?
這個神祕的載體 M,就是 Free Monad。
2. 文章有提到一個 FreeMonad 的實作。是將 FreeMonad 以 List 遞迴的結構來建構。
`M f` 的 fmap|pure|>>=,可以只靠 (1) `M f` 本身的結構 加上 (2) f 的 fmap 來組裝起來。
3. 用到 M 的結構,來取代 f 要成爲 Monad 所需要的約束。
那麼你對 M f 的操作,都要繞一下 M 的結構,才能達到。 像是 Code 的 type 複雜度越來越複雜,後面的例子都看不懂了XD
#FP筆記 #Functor #Applicative #monad
Free Monad?
1. #Functor 要支援 fmap;
#Applicative 要支援 fmap|pure|<*>;
#Monad 要支援 fmap|pure|<*>|>>=。
可以看到越強的 typeclass,約束越大。
有沒有一個載體 M,可以讓你只有支援 fmap 的 Functor f。擺進去之後,M f 也可以有 Monad 的能力?
讓你的 Functor f,免費地(free) 獲得 Monad 的能力?
這個神祕的載體 M,就是 Free Monad。
2. 文章有提到一個 FreeMonad 的實作。是將 FreeMonad 以 List 遞迴的結構來建構。
`M f` 的 fmap|pure|>>=,可以只靠 (1) `M f` 本身的結構 加上 (2) f 的 fmap 來組裝起來。
3. 用到 M 的結構,來取代 f 要成爲 Monad 所需要的約束。
那麼你對 M f 的操作,都要繞一下 M 的結構,才能達到。 像是 Code 的 type 複雜度越來越複雜,後面的例子都看不懂了XD
#FP筆記 #Functor #Applicative #monad