Effect.matchCauseEffect
Causeを使いつつ副作用のある処理ができる。
用途
異常の種類に応じてログや通知、復旧処理を行う
エラーによって異なるEffectを返す
例
code:ts
const program = Effect.matchCauseEffect(effect, {
onSuccess: (value) => Console.log(Success: ${value}),
onFailure: (cause) => {
switch (cause._tag) {
case "Die": return Console.log(Die: ${cause.defect})
case "Fail": return Console.log(Fail: ${cause.error.message})
case "Interrupt": return Console.log(${cause.fiberId} was interrupted)
}
}
})
→ 失敗の種類ごとにEffectfulな処理(通知、再試行)を分けたいときに使う