// ets_tracing: off import * as CK from "../../../../Collections/Immutable/Chunk/index.js" import * as CH from "../../Channel/index.js" import * as C from "../core.js" /** * Intersperse stream with provided element. */ export function intersperse_( self: C.Stream, middle: A1 ): C.Stream { const writer = ( isFirst: boolean ): CH.Channel, unknown, E, CK.Chunk, void> => CH.readWith( (chunk: CK.Chunk) => { const builder = CK.builder() let flagResult = isFirst CK.forEach_(chunk, (o) => { if (flagResult) { flagResult = false builder.append(o) } else { builder.append(middle) builder.append(o) } }) return CH.zipRight_(CH.write(builder.build()), writer(flagResult)) }, (err: E) => CH.fail(err), (_) => CH.unit ) return new C.Stream(self.channel[">>>"](writer(true))) } /** * Intersperse stream with provided element. * * @ets_data_first intersperse_ */ export function intersperse(middle: A1) { return (self: C.Stream) => intersperse_(self, middle) }