sequenceList<E, A> function

Either<E, ImmutableList<A>> sequenceList<E, A>(
  1. ImmutableList<Either<E, A>> list
)

Takes an ImmutableList of Either values and attempts to extract their right-hand values.

This function iterates through each Either value in the input list. If any of them is a Left, the function immediately returns that Left value. If all are Right values, it collects them into an ImmutableList and wraps it in a Right.

Parameters:

  • list: An ImmutableList of Either values to be processed.

Returns:

An Either containing an ImmutableList of the right-hand values. Returns the first Left encountered while processing the input list.

Examples:

var listOfEithers = il.ImmutableList<Either<String, int>>([
  Right(1),
  Right(2),
  Right(3)
]);
var result = sequenceList(listOfEithers);
print(result); // Outputs: Right(ImmutableList([1, 2, 3]))
var listOfEithersWithLeft = il.ImmutableList<Either<String, int>>([
  Right(1),
  Left("Error"),
  Right(3)
]);
var resultWithError = sequenceList(listOfEithersWithLeft);
print(resultWithError); // Outputs: Left("Error")

Implementation

Either<E, il.ImmutableList<A>> sequenceList<E, A>(
    il.ImmutableList<Either<E, A>> list) {
  final result = <A>[];

  for (var e in list) {
    switch (e) {
      case Left(value: var leftValue):
        return Left<E, il.ImmutableList<A>>(leftValue);
      case Right(value: var rightValue):
        result.add(rightValue);
    }
  }

  return Right(il.of(result));
}