import { pipe } from "../../../Function"; import type { Option } from "../../../Option"; import { none, some } from "../../../Option"; import type { Cause } from "../../Exit/Cause"; import * as T from "../../Task"; export type Pull = T.Task, ReadonlyArray>; export const end = T.fail(none()); export const fail = (e: E) => T.fail(some(e)); export const halt = (e: Cause) => pipe(T.halt(e), T.first(some)); export const empty = () => T.pure([] as ReadonlyArray); export const emit = (a: A) => T.pure([a]); export const emitArray = (as: ReadonlyArray) => T.pure(as);