symmetricDifference<A> function

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

Returns a function that computes the symmetric difference between two ImmutableLists.

Given two lists, list1 and list2, it returns a new list containing the elements that are in either list1 or list2 but not both, based on the provided equality comparison.

Example:

final eqInt = EqInt();
final differ = symmetricDifference(eqInt);
final list1 = ImmutableList([1, 2, 3, 4]);
final list2 = ImmutableList([3, 4, 5, 6]);
final result = differ(list1)(list2);
print(result);  // [1, 2, 5, 6]

Implementation

ImmutableList<A> Function(ImmutableList<A>) Function(ImmutableList<A>)
    symmetricDifference<A>(Eq<A> eq) {
  final diff = difference(eq);
  return (ImmutableList<A> list1) {
    return (ImmutableList<A> list2) {
      final diff1to2 = diff(list1)(list2).items;
      final diff2to1 = diff(list2)(list1).items;
      return ImmutableList([...diff1to2, ...diff2to1]);
    };
  };
}