Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import io.vavr.Function1;
- import io.vavr.Tuple;
- import io.vavr.Tuple2;
- import io.vavr.collection.List;
- import io.vavr.Option;
- import static io.vavr.collection.List.unfoldRight;
- class A {}
- class B {}
- class Main {
- Function1<A, Option<Tuple2<B, A>>> f = (a) -> Option.of(Tuple.of(new B(), new A()));
- List<B> L0 = unfoldRight(new A(), f); // *
- List<B> L1 = unfoldRight(new A(), (a) -> Option.of(Tuple.of(new B(), new A()));
- Option<Tuple2<B, A>> g(A a) { return Option.of(Tuple.of(new B(), new A())); }
- List<B> L2 = unfoldRight(new A(), (a) -> g(a)); // **
- }
- // * Compilation fails with: "Incompatible equality constraint: ? extends T and A"
- // ** Compilation fails with: "Incompatible equality constraint: ? extends A and A"
- static <T, U> List<U> unfoldRight(T seed, Function<? super T, Option<Tuple2<? extends U, ? extends T>>> f)
Add Comment
Please, Sign In to add comment