unique<A> function

NonEmptyList<A> Function(NonEmptyList<A>) unique<A>(
  1. 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());
    };