fromPredicate<A, B> function

TaskEither<A, B> Function(B value) fromPredicate<A, B>(
  1. Predicate<B> predicate,
  2. A leftValue(
      )
    )

    Creates a TaskEither based on a predicate function.

    This function evaluates a given predicate using the provided value. If the predicate evaluates to true, the result is a TaskEither that resolves to a e.Right with the same value. If the predicate evaluates to false, the result is a TaskEither that resolves to a e.Left with the value produced by the leftValue function.

    /// Example:
    final predicate = (int value) => value > 5;
    final leftValue = () => "Less than or equal to 5";
    final taskEitherFunction = fromPredicate<String, int>(predicate, leftValue);
    
    taskEitherFunction(6).value().then((result) {
      if (result is e.Right) {
        print(result.value); // Outputs: 6
      } else if (result is e.Left) {
        print(result.value); // This line won't execute for the value 6
      }
    });
    
    taskEitherFunction(4).value().then((result) {
      if (result is e.Right) {
        print(result.value); // This line won't execute for the value 4
      } else if (result is e.Left) {
        print(result.value); // Outputs: "Less than or equal to 5"
      }
    });
    

    A: The type of the left value. B: The type of the right value and the input value.

    Returns a function that takes a value of type B and produces a TaskEither of A or B.

    Implementation

    TaskEither<A, B> Function(B value) fromPredicate<A, B>(
      Predicate<B> predicate,
      A Function() leftValue,
    ) {
      return (B value) =>
          predicate(value) ? right<A, B>(value) : left<A, B>(leftValue());
    }