( n: number, ref1: TRef.TRef<number>, ref2: TRef.TRef<number>, ref3: TRef.TRef<number> )
| 115 | ) |
| 116 | |
| 117 | const 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 | |
| 143 | const permutation = (ref1: TRef.TRef<number>, ref2: TRef.TRef<number>): STM.STM<void> => |
| 144 | pipe( |
no test coverage detected