使用 chain 組合回傳 Either 的 Function
Either 適合 Function Pipeline,可提早結束讓後續 Pure Function 不執行,但若 Pure Function 也回傳 Either,則會產生 Nested Either,如此必須使用 chain
取代 map
。
失くすものさえない今が強くなるチャンスよ
Either 適合 Function Pipeline,可提早結束讓後續 Pure Function 不執行,但若 Pure Function 也回傳 Either,則會產生 Nested Either,如此必須使用 chain
取代 map
。
Sanctuary 為著名的 Functional Library,其比 Ramda 嚴格,也能在 Runtime 檢查型別,且完整支援 Fantasy Land 的 Algebraic Data Type,寫起來更有 Haskell 感覺。
Ramda 要實現 Ternary Operator 要使用 ifElse
,實務上還常得搭配 identity
與 always
,Sanctuary 則提供了 boolean
,只需單一 Function 即可達成需求。
ECMAScript 不需 Type Annotation 與 Type Coercion 是優點也是缺點,優點是 Codebase 很精簡,不用夾雜 Type 資訊;缺點是這些常是 Bug 來源。Sanctuary 支援 Runtime Type Checking,在 Type 上遠比 Ramda 嚴謹。
Sanctuary 與 Ramda 另一個差異是對於 Currying 看法不同,這使得原本習慣於 Ramda 使用者剛接觸 Sanctuary 時感到不習慣。