MCPcopy Index your code
hub / github.com/Effect-TS/effect / causeEquals

Function causeEquals

packages/effect/src/internal/cause.ts:421–462  ·  view source on GitHub ↗
(left: Cause.Cause<unknown>, right: Cause.Cause<unknown>)

Source from the content-addressed store, hash-verified

419
420/** @internal */
421const causeEquals = (left: Cause.Cause<unknown>, right: Cause.Cause<unknown>): boolean => {
422 let leftStack: Chunk.Chunk<Cause.Cause<unknown>> = Chunk.of(left)
423 let rightStack: Chunk.Chunk<Cause.Cause<unknown>> = Chunk.of(right)
424 while (Chunk.isNonEmpty(leftStack) && Chunk.isNonEmpty(rightStack)) {
425 const [leftParallel, leftSequential] = pipe(
426 Chunk.headNonEmpty(leftStack),
427 reduce(
428 [HashSet.empty<unknown>(), Chunk.empty<Cause.Cause<unknown>>()] as const,
429 ([parallel, sequential], cause) => {
430 const [par, seq] = evaluateCause(cause)
431 return Option.some(
432 [
433 pipe(parallel, HashSet.union(par)),
434 pipe(sequential, Chunk.appendAll(seq))
435 ] as const
436 )
437 }
438 )
439 )
440 const [rightParallel, rightSequential] = pipe(
441 Chunk.headNonEmpty(rightStack),
442 reduce(
443 [HashSet.empty<unknown>(), Chunk.empty<Cause.Cause<unknown>>()] as const,
444 ([parallel, sequential], cause) => {
445 const [par, seq] = evaluateCause(cause)
446 return Option.some(
447 [
448 pipe(parallel, HashSet.union(par)),
449 pipe(sequential, Chunk.appendAll(seq))
450 ] as const
451 )
452 }
453 )
454 )
455 if (!Equal.equals(leftParallel, rightParallel)) {
456 return false
457 }
458 leftStack = leftSequential
459 rightStack = rightSequential
460 }
461 return true
462}
463
464// -----------------------------------------------------------------------------
465// Flattening

Callers 2

[Equal.symbol]Function · 0.85
cause.tsFile · 0.85

Calls 4

evaluateCauseFunction · 0.85
pipeFunction · 0.70
reduceFunction · 0.70
ofMethod · 0.65

Tested by

no test coverage detected