// ets_tracing: off import * as T from "../../../Effect/index.js" import { pipe } from "../../../Function/index.js" import * as Chain from "./api/chain.js" import { fromEffect } from "./api/index.js" import * as Map from "./api/map.js" import type * as C from "./core.js" function bind( tag: Exclude, f: (_: K) => C.Stream ) { return ( mk: C.Stream ): C.Stream => pipe( mk, Chain.chain((k) => pipe( f(k), Map.map((a): K & { [k in N]: A } => ({ ...k, [tag]: a } as any)) ) ) ) } function let_(tag: Exclude, f: (_: K) => A) { return (mk: C.Stream): C.Stream => pipe( mk, Map.map((k): K & { [k in N]: A } => ({ ...k, [tag]: f(k) } as any)) ) } const do_ = fromEffect(T.succeed({})) export { let_ as let, bind, do_ as do }