// ets_tracing: off import type * as O from "@effect-ts/system/Option" import * as Tp from "../../Collections/Immutable/Tuple/index.js" import type { Predicate, Refinement } from "../../Function/index.js" import { filter } from "./filter.js" /** * Partition * * @ets_data_first partition_ */ export function partition( refinement: Refinement ): (fa: O.Option) => Tp.Tuple<[O.Option, O.Option]> /** * Partition * * @ets_data_first partition_ */ export function partition( predicate: Predicate ): (fa: O.Option) => Tp.Tuple<[O.Option, O.Option]> /** * Partition * * @ets_data_first partition_ */ export function partition( predicate: Predicate ): (fa: O.Option) => Tp.Tuple<[O.Option, O.Option]> { return (fa) => partition_(fa, predicate) } /** * Partition */ export function partition_( fa: O.Option, refinement: Refinement ): Tp.Tuple<[O.Option, O.Option]> /** * Partition */ export function partition_( fa: O.Option, predicate: Predicate ): Tp.Tuple<[O.Option, O.Option]> /** * Partition */ export function partition_( fa: O.Option, predicate: Predicate ): Tp.Tuple<[O.Option, O.Option]> { return Tp.tuple(filter((a: A) => !predicate(a))(fa), filter(predicate)(fa)) }