aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java b/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java
index b2e892b..d18f278 100644
--- a/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java
+++ b/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java
@@ -23,6 +23,17 @@ public class InternalResult<T> {
lazyFlatMap(results, result -> result.warnings));
}
+ public static <T1, T2, R> InternalResult<R> flatMap(
+ InternalResult<T1> first,
+ InternalResult<T2> second,
+ BiFunction<T1, T2, InternalResult<R>> function)
+ {
+ InternalResult<R> intermediateResult = function.apply(first.value, second.value);
+ return new InternalResult<>(
+ intermediateResult.value,
+ lazyConcat(lazyConcat(first.warnings, second.warnings), intermediateResult.warnings));
+ }
+
public static <T1, T2, R> InternalResult<R> map(
InternalResult<T1> first,
InternalResult<T2> second,