diff --git a/vavr/src/main/java/io/vavr/collection/List.java b/vavr/src/main/java/io/vavr/collection/List.java index 0c981ea9c..6442bb9e8 100644 --- a/vavr/src/main/java/io/vavr/collection/List.java +++ b/vavr/src/main/java/io/vavr/collection/List.java @@ -712,7 +712,8 @@ static List unfoldRight(T seed, Function List unfoldLeft(T seed, Function>> f) { - return Iterator.unfoldLeft(seed, f).toList(); + return Iterator.unfoldRight(seed, f.andThen(tupleOpt -> tupleOpt.map(Tuple2::swap))) + .foldLeft(List.empty(), List::prepend); } /** @@ -740,7 +741,8 @@ static List unfoldLeft(T seed, Function List unfold(T seed, Function>> f) { - return Iterator.unfold(seed, f).toList(); + return Iterator.unfoldRight(seed, f.andThen(tupleOpt -> tupleOpt.map(Tuple2::swap))) + .foldLeft(List.empty(), List::prepend); } @Override