| 63 | } |
| 64 | |
| 65 | const chain = (depth: number) => |
| 66 | ( |
| 67 | next: (stm: STM.STM<number>) => STM.STM<number> |
| 68 | ): Effect.Effect<number> => { |
| 69 | const loop = (_n: number, _acc: STM.STM<number>): Effect.Effect<number> => { |
| 70 | let n = _n |
| 71 | let acc = _acc |
| 72 | while (n > 0) { |
| 73 | acc = next(acc) |
| 74 | n = n - 1 |
| 75 | } |
| 76 | return STM.commit(acc) |
| 77 | } |
| 78 | return loop(depth, STM.succeed(0)) |
| 79 | } |
| 80 | |
| 81 | const chainError = (depth: number): Effect.Effect<never, number> => { |
| 82 | const loop = (_n: number, _acc: STM.STM<never, number, never>): Effect.Effect<never, number> => { |