# Applicative

運用於 Functor 與 Functor 的運算。

意思是將 value 與 function 分別做包裝運算。

參考附圖 (opens new window)

const NumberBox = (fn) => ({
  fmap: (x) => NumberBox((x) => fn(x)),
  ap: (other) => NumberBox((x) => other.fmap(fn(x)).runWith(x)),
  runWith: (x) => fn(x),
});
1
2
3
4
5

例如:當輸入數值,返回的值皆為「數值加三」:

NumberBox((x) => x)
  .ap(NumberBox((x) => x + 3)) // 透過 fmap 傳入的函式,會將輸入的數值與函式做運算,最後由 runWith 執行
  .runWith(2);
// 5
1
2
3
4

# 參考

Monad 概念圖解篇 (opens new window)

Last Updated: 2021/2/25 上午8:00:30