unique<A> function

ImmutableList<A> Function(ImmutableList<A>) unique<A>(
  1. Eq<A> eq
)

Creates an ImmutableList by filtering out duplicate items using the eq comparator.

Example:

final list = ImmutableList<int>([1, 2, 2, 3, 3]);
final uniqueList = unique(Eq.fromDefault<int>())(list);
print(uniqueList.items);  // Outputs: (1, 2, 3)

Implementation

ImmutableList<A> Function(ImmutableList<A>) unique<A>(Eq<A> eq) =>
    (ImmutableList<A> list) {
      final seen = <A>{};
      return ImmutableList(list._items.where((item) {
        final isDuplicate = seen.any((seenItem) => eq.equals(item, seenItem));
        if (!isDuplicate) {
          seen.add(item);
        }
        return !isDuplicate;
      }).toList());
    };