點燈坊

失くすものさえない今が強くなるチャンスよ

使用 N 取代回傳 Nothing 的 Function

Sam Xiao's Avatar 2021-07-30

Ramda 有提供 TF,Sanctuary 有提供 I,這些都是非常好用 Function,事實上 _ => Nothing 亦經常使用,亦可簡化成 N

Version

Wink-fp 1.28.5

toMaybe

import { isNil } from 'ramda'
import { Just, Nothing, ifElse } from 'sanctuary'

let toMaybe = ifElse (isNil) (_ => Nothing) (Just)

toMaybe (2) // ?
toMaybe (null) // ?
toMaybe (undefined) // ?

使用 ifElse 組合 toMaybe,將傳入 value 轉成 Just 或 Nothing:

  • isNil:判斷傳入 value 回 nullundefined
  • _ => Nothing:若為 nullundefined 則回傳 Nothing
  • Just:否則回傳 Just

由於 ifElse 要求所有 argument 都是 function,因此會出現 _ => Nothing

n000

N

import { isNil } from 'ramda'
import { Just, ifElse } from 'sanctuary'
import { N } from 'wink-fp'

let toMaybe = ifElse (isNil) (N) (Just)

toMaybe (2) // ?
toMaybe (null) // ?
toMaybe (undefined) // ?

Wink-fp 已經內建 N,可直接使用取代 _ => Nothing

N :: * -> Nothing
回傳 Nothing 的 function

*:任意 value

Nothing:回傳 Nothing

n001

Conclusion

  • 由於 Nothing 為 value 而非 function,所以才會出現 _ => Nothing 情況,可使用 N 讓 code 更精簡