import { Enumerable, IEnumerable } from '../enumerable' import { EqualityComparer, IEqualityComparer } from '../equality-comparer' import * as utils from '../utils' import * as assistance from './assistance' export function distinct(source: Iterable, comparer?: IEqualityComparer): IEnumerable { utils.throws.ThrowIfNull('source', source) if (Enumerable.Any(source)) { comparer = comparer || EqualityComparer.Default() return Enumerable.AsEnumerable(assistance.distinct(source, (x, y) => comparer.Equals(x, y))) } return Enumerable.Empty() }