<A>(middle: A): (combiner: Combiner<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)
import { Combiner, String } from "effect"
const commaSep = Combiner.intercalate(",")(String.ReducerConcat)
console.log(commaSep.combine("a", "b"))
// Output: "a,b"export function function intercalate<A>(
middle: A
): (combiner: Combiner<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)
import { Combiner, String } from "effect"
const commaSep = Combiner.intercalate(",")(String.ReducerConcat)
console.log(commaSep.combine("a", "b"))
// Output: "a,b"
intercalate<function (type parameter) A in intercalate<A>(middle: A): (combiner: Combiner<A>) => Combiner<A>A>(middle: Amiddle: function (type parameter) A in intercalate<A>(middle: A): (combiner: Combiner<A>) => Combiner<A>A) {
return (combiner: Combiner<A>(parameter) combiner: {
combine: (self: A, that: A) => A;
}
combiner: interface Combiner<A>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 (Combining numbers with addition)
import { Combiner } from "effect"
const Sum = Combiner.make<number>((self, that) => self + that)
console.log(Sum.combine(3, 4))
// Output: 7
Combiner<function (type parameter) A in intercalate<A>(middle: A): (combiner: Combiner<A>) => Combiner<A>A>): interface Combiner<A>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 (Combining numbers with addition)
import { Combiner } from "effect"
const Sum = Combiner.make<number>((self, that) => self + that)
console.log(Sum.combine(3, 4))
// Output: 7
Combiner<function (type parameter) A in intercalate<A>(middle: A): (combiner: Combiner<A>) => Combiner<A>A> =>
function make<A>(
combine: (self: A, that: A) => A
): Combiner<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)
import { Combiner } from "effect"
const Product = Combiner.make<number>((self, that) => self * that)
console.log(Product.combine(3, 5))
// Output: 15
make((self: Aself, that: Athat) => combiner: Combiner<A>(parameter) combiner: {
combine: (self: A, that: A) => A;
}
combiner.Combiner<A>.combine: (self: A, that: A) => ACombines two values into a new value.
When to use
Use to merge two values according to this combining strategy.
combine(self: Aself, combiner: Combiner<A>(parameter) combiner: {
combine: (self: A, that: A) => A;
}
combiner.Combiner<A>.combine: (self: A, that: A) => ACombines two values into a new value.
When to use
Use to merge two values according to this combining strategy.
combine(middle: Amiddle, that: Athat)))
}