OT Chen :ablobgrin: · @ot32em
70 followers · 1109 posts · Server g0v.social

Free Monad?

1.
要支援 fmap
要支援 fmap|pure|<*>
要支援 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

Last updated 2 years ago

OT Chen :ablobgrin: · @ot32em
70 followers · 1106 posts · Server g0v.social

Free Monad?

1.
要支援 fmap
要支援 fmap|pure|<*>
要支援 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

Last updated 2 years ago

OT Chen :ablobgrin: · @ot32em
70 followers · 1106 posts · Server g0v.social

Free Monad?

1. 要支援 fmap;
要支援 fmap|pure|<*>;
要支援 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

Last updated 2 years ago