# Applicative
運用於 Functor 與 Functor 的運算。
意思是將 value 與 function 分別做包裝運算。
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
2
3
4
5
例如:當輸入數值,返回的值皆為「數值加三」:
NumberBox((x) => x)
.ap(NumberBox((x) => x + 3)) // 透過 fmap 傳入的函式,會將輸入的數值與函式做運算,最後由 runWith 執行
.runWith(2);
// 5
1
2
3
4
2
3
4