| /** | |
| * Defines reusable rules for merging two values of the same type. | |
| * | |
| * A `Combiner<A>` contains one operation, `combine(self, that)`, which returns | |
| * the merged value. It does not define an initial value for reducing a | |
| * collection; use a `Reducer` when you need that. This module includes the | |
| * `Combiner` interface, a constructor for custom combining logic, and common | |
| * combiners for choosing or ordering values. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| import type * as Order from "./Order.ts"; | |
| /** | |
| * Represents a strategy for combining two values of the same type `A`. A | |
| * `Combiner` contains a single `combine` method that takes two values and | |
| * returns a merged result. It does not include an identity/empty value; use | |
| * `Reducer` when you need one. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you need to describe how two values of the same type | |
| * merge, pass a reusable combining strategy to library functions like | |
| * `Struct.makeCombiner` or `Option.makeCombinerFailFast`, or define the | |
| * combining step for a `Reducer`. | |
| * | |
| * **Example** (number addition combiner) | |
| * | |
| * ```ts | |
| * import { Combiner } from "effect" | |
| * | |
| * const Sum = Combiner.make<number>((self, that) => self + that) | |
| * | |
| * console.log(Sum.combine(3, 4)) | |
| * // Output: 7 | |
| * ``` | |
| * | |
| * @see {@link make} – create a `Combiner` from a function | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface Combiner<A> { | |
| /** | |
| * Combines two values into a new value. | |
| * | |
| * **When to use** | |
| * | |
| * Use to merge two values according to this combining strategy. | |
| */ | |
| readonly combine: (self: A, that: A) => A; | |
| } | |
| /** | |
| * Creates a `Combiner` from a binary function. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you have a custom combining operation that is not covered by | |
| * the built-in constructors (`min`, `max`, `first`, `last`, `constant`). | |
| * | |
| * **Details** | |
| * | |
| * The returned combiner's `combine` method delegates to the provided function. | |
| * Any purity, associativity, or mutation behavior comes from that function. | |
| * | |
| * **Example** (multiplying numbers) | |
| * | |
| * ```ts | |
| * import { Combiner } from "effect" | |
| * | |
| * const Product = Combiner.make<number>((self, that) => self * that) | |
| * | |
| * console.log(Product.combine(3, 5)) | |
| * // Output: 15 | |
| * ``` | |
| * | |
| * @see {@link Combiner} – the interface this creates | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare function make<A>(combine: (self: A, that: A) => A): Combiner<A>; | |
| /** | |
| * Reverses the argument order of a combiner's `combine` method. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you want the right-hand value to act as the accumulator, or need to | |
| * reverse a non-commutative combiner such as string concatenation. | |
| * | |
| * **Details** | |
| * | |
| * Returns a new `Combiner` where `combine(self, that)` calls the original | |
| * combiner as `combine(that, self)`. | |
| * | |
| * **Example** (reversing string concatenation) | |
| * | |
| * ```ts | |
| * import { Combiner, String } from "effect" | |
| * | |
| * const Prepend = Combiner.flip(String.ReducerConcat) | |
| * | |
| * console.log(Prepend.combine("a", "b")) | |
| * // Output: "ba" | |
| * ``` | |
| * | |
| * @see {@link make} | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| export declare function flip<A>(combiner: Combiner<A>): Combiner<A>; | |
| /** | |
| * Creates a `Combiner` that returns the smaller of two values according to | |
| * the provided `Order`. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you want to accumulate the minimum value across a collection or | |
| * build a `Reducer` that tracks the running minimum. | |
| * | |
| * **Details** | |
| * | |
| * The combiner compares values using the given `Order`. When values are equal, | |
| * it returns `that` (the second argument). | |
| * | |
| * **Example** (minimum of two numbers) | |
| * | |
| * ```ts | |
| * import { Combiner, Number } from "effect" | |
| * | |
| * const Min = Combiner.min(Number.Order) | |
| * | |
| * console.log(Min.combine(3, 1)) | |
| * // Output: 1 | |
| * | |
| * console.log(Min.combine(1, 3)) | |
| * // Output: 1 | |
| * ``` | |
| * | |
| * @see {@link max} | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare function min<A>(order: Order.Order<A>): Combiner<A>; | |
| /** | |
| * Creates a `Combiner` that returns the larger of two values according to | |
| * the provided `Order`. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you want to accumulate the maximum value across a collection or | |
| * build a `Reducer` that tracks the running maximum. | |
| * | |
| * **Details** | |
| * | |
| * The combiner compares values using the given `Order`. When values are equal, | |
| * it returns `that` (the second argument). | |
| * | |
| * **Example** (maximum of two numbers) | |
| * | |
| * ```ts | |
| * import { Combiner, Number } from "effect" | |
| * | |
| * const Max = Combiner.max(Number.Order) | |
| * | |
| * console.log(Max.combine(3, 1)) | |
| * // Output: 3 | |
| * | |
| * console.log(Max.combine(1, 3)) | |
| * // Output: 3 | |
| * ``` | |
| * | |
| * @see {@link min} | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare function max<A>(order: Order.Order<A>): Combiner<A>; | |
| /** | |
| * Creates a `Combiner` that always returns the first (left) argument. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you want "first write wins" semantics while merging values. | |
| * | |
| * **Details** | |
| * | |
| * `combine(self, that)` returns `self` and ignores `that`. | |
| * | |
| * **Example** (keeping the first value) | |
| * | |
| * ```ts | |
| * import { Combiner } from "effect" | |
| * | |
| * const First = Combiner.first<number>() | |
| * | |
| * console.log(First.combine(1, 2)) | |
| * // Output: 1 | |
| * ``` | |
| * | |
| * @see {@link last} | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare function first<A>(): Combiner<A>; | |
| /** | |
| * Creates a `Combiner` that always returns the last (right) argument. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you want "last write wins" semantics while merging values. | |
| * | |
| * **Details** | |
| * | |
| * `combine(self, that)` returns `that` and ignores `self`. | |
| * | |
| * **Example** (keeping the last value) | |
| * | |
| * ```ts | |
| * import { Combiner } from "effect" | |
| * | |
| * const Last = Combiner.last<number>() | |
| * | |
| * console.log(Last.combine(1, 2)) | |
| * // Output: 2 | |
| * ``` | |
| * | |
| * @see {@link first} | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare function last<A>(): Combiner<A>; | |
| /** | |
| * Creates a `Combiner` that ignores both arguments and always returns the | |
| * given constant value. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you need a combiner that always returns a fixed value, including | |
| * when a generic API requires a combiner but the result is predetermined. | |
| * | |
| * **Details** | |
| * | |
| * `combine(self, that)` returns the constant `a` and ignores both arguments. | |
| * | |
| * **Example** (always returning zero) | |
| * | |
| * ```ts | |
| * import { Combiner } from "effect" | |
| * | |
| * const Zero = Combiner.constant(0) | |
| * | |
| * console.log(Zero.combine(42, 99)) | |
| * // Output: 0 | |
| * ``` | |
| * | |
| * @see {@link first} | |
| * @see {@link last} | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare function constant<A>(a: A): Combiner<A>; | |
| /** | |
| * Wraps a `Combiner` so that a separator value is inserted between every | |
| * pair of combined elements. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you need to inject a fixed separator between accumulated values, | |
| * such as when building delimited strings, paths, or CSV-like output by | |
| * repeated combination. | |
| * | |
| * **Details** | |
| * | |
| * `intercalate(middle)(combiner).combine(self, that)` is equivalent to | |
| * `combiner.combine(self, combiner.combine(middle, that))`. This function is | |
| * curried: first provide the separator, then the base combiner. | |
| * | |
| * **Example** (joining strings with a separator) | |
| * | |
| * ```ts | |
| * import { Combiner, String } from "effect" | |
| * | |
| * const commaSep = Combiner.intercalate(",")(String.ReducerConcat) | |
| * | |
| * console.log(commaSep.combine("a", "b")) | |
| * // Output: "a,b" | |
| * ``` | |
| * | |
| * @see {@link make} | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| export declare function intercalate<A>(middle: A): (combiner: Combiner<A>) => Combiner<A>; | |
| //# sourceMappingURL=Combiner.d.ts.map |
Xet Storage Details
- Size:
- 7.62 kB
- Xet hash:
- 2d8a8e9059277dc19976a6c32b95e252c248c82e0543bdcb6b082932ef347f8d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.