Monad 內的 Value 稱為 Monadic Value,可用 4 種方法改變之。
Version
Sanctuary 3.1.0
map
import { Just, map, add } from 'sanctuary'
let data = Just (1)
let f = add (1)
map (f) (data) // ?
data
為 Monad,我們希望提供 f
改變 data
。
f
為一般 function,可直接傳入 map
改變 Monadic Value。
chain
import { compose, Just, chain, add } from 'sanctuary'
let data = Just (1)
let f = compose (Just) (add (1))
chain (f) (data) // ?
f
是回傳 Monad 的 function,可傳入 chain
改變 Monadic Value。
ap
import { Just, ap, add } from 'sanctuary'
let data = Just (1)
let f = Just (add (1))
ap (f) (data) // ?
f
會回傳 Monad,但會將 function 包進 Monad 內,可傳入 ap
改變 Monadic Value。
lift2
import { Just, lift2, add } from 'sanctuary'
let data = Just (1)
let f = lift2 (add)
f (Just (1)) (data) // ?
f
為接受 Monad 與回傳 Monad 的 function,可直接傳入 Monad 改變 Monadic Value。
Conclusion
- 4 種方法各有它適用場合,但都可改變 Monadic Value