symmetricDifference<A> function
- Eq<
A> eq
Returns a function that computes the symmetric difference between two ImmutableList
s.
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]);
};
};
}