MCPcopy
hub / github.com/Effect-TS/effect / compute3TRefN

Function compute3TRefN

packages/effect/test/STM.test.ts:117–141  ·  view source on GitHub ↗
(
  n: number,
  ref1: TRef.TRef<number>,
  ref2: TRef.TRef<number>,
  ref3: TRef.TRef<number>
)

Source from the content-addressed store, hash-verified

115 )
116
117const compute3TRefN = (
118 n: number,
119 ref1: TRef.TRef<number>,
120 ref2: TRef.TRef<number>,
121 ref3: TRef.TRef<number>
122): Effect.Effect<number> =>
123 pipe(
124 STM.all([TRef.get(ref1), TRef.get(ref2)]),
125 STM.tap(([v1, v2]) => pipe(ref3, TRef.set(v1 + v2))),
126 STM.flatMap(([v1, v2]) =>
127 pipe(
128 TRef.get(ref3),
129 STM.flatMap((v3) =>
130 pipe(
131 ref1,
132 TRef.set(v1 - 1),
133 STM.zipRight(pipe(ref2, TRef.set(v2 + 1))),
134 STM.as(v3)
135 )
136 )
137 )
138 ),
139 STM.commit,
140 Effect.repeatN(n)
141 )
142
143const permutation = (ref1: TRef.TRef<number>, ref2: TRef.TRef<number>): STM.STM<void> =>
144 pipe(

Callers 1

STM.test.tsFile · 0.85

Calls 3

pipeFunction · 0.90
getMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected