(
bools: ReadonlyArray<boolean>,
numbers1: ReadonlyArray<number>,
numbers2: ReadonlyArray<number>
)
| 4016 | it.effect("interleaveWith", () => |
| 4017 | Effect.gen(function*() { |
| 4018 | const interleave = ( |
| 4019 | bools: ReadonlyArray<boolean>, |
| 4020 | numbers1: ReadonlyArray<number>, |
| 4021 | numbers2: ReadonlyArray<number> |
| 4022 | ): ReadonlyArray<number> => |
| 4023 | pipe( |
| 4024 | Array.head(bools), |
| 4025 | Option.map((head) => { |
| 4026 | if (head) { |
| 4027 | if (Array.isReadonlyArrayNonEmpty(numbers1)) { |
| 4028 | const head = pipe(numbers1, Array.getUnsafe(0)) |
| 4029 | const tail = pipe(numbers1, Array.drop(1)) |
| 4030 | return pipe( |
| 4031 | interleave(pipe(bools, Array.drop(1)), tail, numbers2), |
| 4032 | Array.prepend(head) |
| 4033 | ) |
| 4034 | } |
| 4035 | if (Array.isReadonlyArrayNonEmpty(numbers2)) { |
| 4036 | return interleave(pipe(bools, Array.drop(1)), Array.empty<number>(), numbers2) |
| 4037 | } |
| 4038 | return Array.empty<number>() |
| 4039 | } |
| 4040 | if (Array.isReadonlyArrayNonEmpty(numbers2)) { |
| 4041 | const head = pipe(numbers2, Array.getUnsafe(0)) |
| 4042 | const tail = pipe(numbers2, Array.drop(1)) |
| 4043 | return pipe( |
| 4044 | interleave(pipe(bools, Array.drop(1)), numbers1, tail), |
| 4045 | Array.prepend(head) |
| 4046 | ) |
| 4047 | } |
| 4048 | if (Array.isReadonlyArrayNonEmpty(numbers1)) { |
| 4049 | return interleave(pipe(bools, Array.drop(1)), numbers1, Array.empty<number>()) |
| 4050 | } |
| 4051 | return Array.empty<number>() |
| 4052 | }), |
| 4053 | Option.getOrElse(() => Array.empty<number>()) |
| 4054 | ) |
| 4055 | const boolStream = Stream.make(true, true, false, true, false) |
| 4056 | const stream1 = Stream.make(1, 2, 3, 4, 5) |
| 4057 | const stream2 = Stream.make(4, 5, 6, 7, 8) |
no test coverage detected