unique<A> function
- Eq<
A> eq
Returns a new NonEmptyList with unique items based on the equality eq
.
var eq = Eq<int>((a, b) => a == b);
var nel = NonEmptyList([1, 2, 2, 3, 3]);
print(unique(eq)(nel).items); // [1, 2, 3]
Implementation
NonEmptyList<A> Function(NonEmptyList<A>) unique<A>(Eq<A> eq) =>
(NonEmptyList<A> list) {
final seen = <A>{};
return NonEmptyList(list._items.where((item) {
final isDuplicate = seen.any((seenItem) => eq.equals(item, seenItem));
if (!isDuplicate) {
seen.add(item);
}
return !isDuplicate;
}).toList());
};