實務上會遇到若 Argument 存在則執行 Side Effect,否則不執行,傳統會使用 if
判斷 Argument,事實上也可透過 Maybe 自動忽略 null
與 undefined
不執行 Side Effect。
Version
Sanctuary 3.1.0
if
let f = g => x => {
if (x) g (x)
}
f (console.log) (1)
f (console.log) (null)
f (console.log) (undefined)
使用 if
判斷 argument 不是 null
或 undefined
才執行 side effect。
Maybe
import { compose, map } from 'sanctuary'
import { toMaybe } from 'wink-fp'
let f = g => compose (map (g)) (toMaybe)
f (console.log) (1)
f (console.log) (null)
f (console.log) (undefined)
將 argument 透過 toMaybe
包進 Maybe,若為 null
或 undefined
則為 Nothing,因此不會執行 side effect。
Conclusion
- 由於
toMaybe
會將null
與undefined
視為 Nothing,可使用此特色避免執行 side effect toMaybe
原本為 Sanctuary 內建 function,但後來因故拿掉,可改用 Wink-fp 版本的toMaybe