Causeの種類
Cause (effect)は下記の6種類から構成されるツリー構造である
https://effect.website/docs/data-types/cause/#cause-variations
各ページに書いた_tagのところを見てみると分かりそうmrsekut.icon
Causeオブジェクトの_tagの種類が下記の種類あり、
あらゆるCauseはそれらの組み合わせで構成されているということ
6種類
Cause.empty
Cause.fail
Cause.die
Cause.interrupt
Cause.sequential
Cause.parallel
適当に組み合わせた例
code:ts
import { Cause, Effect } from "effect"
const nested: Cause.Cause<string> = Cause.sequential(
Cause.fail("L1: fail"),
Cause.parallel(
Cause.die("L2-left: die"),
Cause.sequential(
Cause.fail("L3-left: fail"),
Cause.die("L3-right: die")
)
)
)
const program = Effect.failCause(nested)
console.log(await Effect.runPromiseExit(program))
6種類のCauseの構成物になっているのがわかる
code:result
{
_id: "Exit",
_tag: "Failure",
cause: {
_id: "Cause",
_tag: "Sequential",
left: {
_id: "Cause",
_tag: "Fail",
failure: "L1: fail",
},
right: {
_id: "Cause",
_tag: "Parallel",
left: Object ...,
right: Object ...,
},
},
}