<A>(self: Iterable<A>): Array<A>Removes consecutive duplicate elements using Equal.equivalence().
When to use
Use when you need to collapse consecutive duplicates while preserving later non-consecutive repeats, and the default equality is sufficient.
Example (Removing adjacent duplicates)
import { Array } from "effect"
console.log(Array.dedupeAdjacent([1, 1, 2, 2, 3, 3])) // [1, 2, 3]Source effect/Array.ts:45091 lines
export const const dedupeAdjacent: <A>(
self: Iterable<A>
) => Array<A>
Removes consecutive duplicate elements using Equal.equivalence().
When to use
Use when you need to collapse consecutive duplicates while preserving later
non-consecutive repeats, and the default equality is sufficient.
Example (Removing adjacent duplicates)
import { Array } from "effect"
console.log(Array.dedupeAdjacent([1, 1, 2, 2, 3, 3])) // [1, 2, 3]
dedupeAdjacent: <function (type parameter) A in <A>(self: Iterable<A>): Array<A>A>(self: Iterable<A>self: interface Iterable<T, TReturn = any, TNext = any>Iterable<function (type parameter) A in <A>(self: Iterable<A>): Array<A>A>) => interface Array<T>Array<function (type parameter) A in <A>(self: Iterable<A>): Array<A>A> = const dedupeAdjacentWith: <A>(isEquivalent: (self: A, that: A) => boolean) => (self: Iterable<A>) => A[] (+1 overload)dedupeAdjacentWith(import EqualEqual.const asEquivalence: <
A
>() => Equivalence<A>
Wraps
equals
as an Equivalence<A>.
When to use
Use when you want to pass Equal.equals to APIs that require an
Equivalence.
Details
- Returns a function
(a: A, b: A) => boolean that delegates to
equals
.
- Pure; allocates a thin wrapper on each call.
Example (Deduplicating with Equal semantics)
import { Array, Equal } from "effect"
const eq = Equal.asEquivalence<number>()
const result = Array.dedupeWith([1, 2, 2, 3, 1], eq)
console.log(result) // [1, 2, 3]
asEquivalence())Referenced by 1 symbols