/** @internal */
export const renderStream = <A>(self: DocStream.DocStream<A>): string => Effect.runSync(renderSafe(self))
const renderSafe = <A>(self: DocStream.DocStream<A>): Effect.Effect<string> => {
// ... can throw or Effect.succeed
}
// Or
/** @internal */
export const foldMap = dual<
<A, M>(M: monoid.Monoid<M>, f: (a: A) => M) => (self: DocTree.DocTree<A>) => M,
<A, M>(self: DocTree.DocTree<A>, M: monoid.Monoid<M>, f: (a: A) => M) => M
>(3, (self, M, f) => Effect.runSync(foldMapSafe(self, M, f)))
const foldMapSafe = <A, M>(
self: DocTree.DocTree<A>,
M: monoid.Monoid<M>,
f: (a: A) => M
): Effect.Effect<M> => {
// ... can only Effect.succeed
}
/** @internal */
export const renderStream = <A>(self: DocStream.DocStream<A>): string => Effect.runSync(renderSafe(self))
const renderSafe = <A>(self: DocStream.DocStream<A>): Effect.Effect<string> => {
// ... can throw or Effect.succeed
}
// Or
/** @internal */
export const foldMap = dual<
<A, M>(M: monoid.Monoid<M>, f: (a: A) => M) => (self: DocTree.DocTree<A>) => M,
<A, M>(self: DocTree.DocTree<A>, M: monoid.Monoid<M>, f: (a: A) => M) => M
>(3, (self, M, f) => Effect.runSync(foldMapSafe(self, M, f)))
const foldMapSafe = <A, M>(
self: DocTree.DocTree<A>,
M: monoid.Monoid<M>,
f: (a: A) => M
): Effect.Effect<M> => {
// ... can only Effect.succeed
}