GeezerVison is showing github.com — Fix #287: Add semigroup constraint to List.traverseValidation · lovejavaee/functionaljava@9c28f6f
File treeExpand file treeCollapse file tree Open diff view settings core/src/main/java/fj/data
Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: core/src/main/java/fj/data/List.java +5-6Lines changed: 5 additions & 6 deletions | Original file line number | Diff line number | Diff line change |
|---|
| 10 | 10 | import fj.Ordering; | 11 | 11 | import fj.P; | 12 | 12 | import fj.P1; | | 13 | +import fj.Semigroup; | 13 | 14 | import fj.Show; | 14 | 15 | import fj.Unit; | 15 | 16 | import fj.P2; | @@ -676,10 +677,8 @@ public final <B> List<List<B>> traverseList(final F<A, List<B>> f) { | 676 | 677 | single(List.nil())); | 677 | 678 | } | 678 | 679 |
| 679 | | - public final <E, B> Validation<E, List<B>> traverseValidation(final F<A, Validation<E, B>> f) { | 680 | | - return foldRight( | 681 | | - (a, acc) -> f.f(a).bind(b -> acc.map(bs -> bs.cons(b))), | 682 | | - Validation.success(List.nil())); | | 680 | + public final <E, B> Validation<E, List<B>> traverseValidation(Semigroup<E> s, final F<A, Validation<E, B>> f) { | | 681 | + return Validation.sequence(s, map(f)); | 683 | 682 | } | 684 | 683 |
| 685 | 684 | public final <B> V2<List<B>> traverseV2(final F<A, V2<B>> f) { | @@ -2166,8 +2165,8 @@ public F<List<A>, P1<List<B>>> modifyP1F(F<A, P1<B>> f) { | 2166 | 2165 | } | 2167 | 2166 |
| 2168 | 2167 | @Override | 2169 | | - public <E> F<List<A>, Validation<E, List<B>>> modifyValidationF(F<A, Validation<E, B>> f) { | 2170 | | - return l -> l.traverseValidation(f); | | 2168 | + public <E> F<List<A>, Validation<E, List<B>>> modifyValidationF(Semigroup<E> s, F<A, Validation<E, B>> f) { | | 2169 | + return l -> l.traverseValidation(s, f); | 2171 | 2170 | } | 2172 | 2171 |
| 2173 | 2172 | @Override | |
Collapse file Copy file name to clipboardExpand all lines: core/src/main/java/fj/data/optic/PIso.java +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
| 6 | 6 | import fj.P; | 7 | 7 | import fj.P1; | 8 | 8 | import fj.P2; | | 9 | +import fj.Semigroup; | 9 | 10 | import fj.control.Trampoline; | 10 | 11 | import fj.control.parallel.Promise; | 11 | 12 | import fj.data.Either; | @@ -314,7 +315,7 @@ public F<S, P1<T>> modifyP1F(final F<A, P1<B>> f) { | 314 | 315 | } | 315 | 316 |
| 316 | 317 | @Override | 317 | | - public <E> F<S, Validation<E, T>> modifyValidationF(final F<A, Validation<E, B>> f) { | | 318 | + public <E> F<S, Validation<E, T>> modifyValidationF(Semigroup<E> s, final F<A, Validation<E, B>> f) { | 318 | 319 | return self.modifyValidationF(f); | 319 | 320 | } | 320 | 321 |
| |
Collapse file Copy file name to clipboardExpand all lines: core/src/main/java/fj/data/optic/PLens.java +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
| 4 | 4 | import fj.Function; | 5 | 5 | import fj.Monoid; | 6 | 6 | import fj.P1; | | 7 | +import fj.Semigroup; | 7 | 8 | import fj.control.Trampoline; | 8 | 9 | import fj.control.parallel.Promise; | 9 | 10 | import fj.data.Either; | @@ -320,7 +321,7 @@ public F<S, P1<T>> modifyP1F(final F<A, P1<B>> f) { | 320 | 321 | } | 321 | 322 |
| 322 | 323 | @Override | 323 | | - public <E> F<S, Validation<E, T>> modifyValidationF(final F<A, Validation<E, B>> f) { | | 324 | + public <E> F<S, Validation<E, T>> modifyValidationF(Semigroup<E> s, final F<A, Validation<E, B>> f) { | 324 | 325 | return self.modifyValidationF(f); | 325 | 326 | } | 326 | 327 |
| |
Collapse file Copy file name to clipboardExpand all lines: core/src/main/java/fj/data/optic/POptional.java +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
| 6 | 6 | import fj.P; | 7 | 7 | import fj.P1; | 8 | 8 | import fj.P2; | | 9 | +import fj.Semigroup; | 9 | 10 | import fj.control.Trampoline; | 10 | 11 | import fj.control.parallel.Promise; | 11 | 12 | import fj.control.parallel.Strategy; | @@ -345,7 +346,7 @@ public F<S, P1<T>> modifyP1F(final F<A, P1<B>> f) { | 345 | 346 | } | 346 | 347 |
| 347 | 348 | @Override | 348 | | - public <E> F<S, Validation<E, T>> modifyValidationF(final F<A, Validation<E, B>> f) { | | 349 | + public <E> F<S, Validation<E, T>> modifyValidationF(Semigroup<E> s, final F<A, Validation<E, B>> f) { | 349 | 350 | return self.modifyValidationF(f); | 350 | 351 | } | 351 | 352 |
| |
Collapse file Copy file name to clipboardExpand all lines: core/src/main/java/fj/data/optic/PPrism.java +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
| 5 | 5 | import fj.Monoid; | 6 | 6 | import fj.P; | 7 | 7 | import fj.P1; | | 8 | +import fj.Semigroup; | 8 | 9 | import fj.control.Trampoline; | 9 | 10 | import fj.control.parallel.Promise; | 10 | 11 | import fj.control.parallel.Strategy; | @@ -310,7 +311,7 @@ public F<S, P1<T>> modifyP1F(final F<A, P1<B>> f) { | 310 | 311 | } | 311 | 312 |
| 312 | 313 | @Override | 313 | | - public <E> F<S, Validation<E, T>> modifyValidationF(final F<A, Validation<E, B>> f) { | | 314 | + public <E> F<S, Validation<E, T>> modifyValidationF(Semigroup<E> s, final F<A, Validation<E, B>> f) { | 314 | 315 | return self.modifyValidationF(f); | 315 | 316 | } | 316 | 317 |
| |
Collapse file Copy file name to clipboardExpand all lines: core/src/main/java/fj/data/optic/PTraversal.java +12-11Lines changed: 12 additions & 11 deletions | Original file line number | Diff line number | Diff line change |
|---|
| 10 | 10 | import fj.Monoid; | 11 | 11 | import fj.P; | 12 | 12 | import fj.P1; | | 13 | +import fj.Semigroup; | 13 | 14 | import fj.control.Trampoline; | 14 | 15 | import fj.control.parallel.Promise; | 15 | 16 | import fj.data.Either; | @@ -82,7 +83,7 @@ public abstract class PTraversal<S, T, A, B> { | 82 | 83 | /** | 83 | 84 | * modify polymorphically the target of a {@link PTraversal} with an Applicative function | 84 | 85 | */ | 85 | | - public abstract <E> F<S, Validation<E, T>> modifyValidationF(F<A, Validation<E, B>> f); | | 86 | + public abstract <E> F<S, Validation<E, T>> modifyValidationF(Semigroup<E> s, F<A, Validation<E, B>> f); | 86 | 87 |
| 87 | 88 | /** | 88 | 89 | * modify polymorphically the target of a {@link PTraversal} with an Applicative function | @@ -218,10 +219,10 @@ public F<Either<S, S1>, V2<Either<T, T1>>> modifyV2F(final F<A, V2<B>> f) { | 218 | 219 | } | 219 | 220 |
| 220 | 221 | @Override | 221 | | - public <E> F<Either<S, S1>, Validation<E, Either<T, T1>>> modifyValidationF(final F<A, Validation<E, B>> f) { | | 222 | + public <E> F<Either<S, S1>, Validation<E, Either<T, T1>>> modifyValidationF(Semigroup<E> se, final F<A, Validation<E, B>> f) { | 222 | 223 | return ss1 -> ss1.either( | 223 | | - s -> self.modifyValidationF(f).f(s).map(Either.left_()), | 224 | | - s1 -> other.modifyValidationF(f).f(s1).map(Either.right_()) | | 224 | + s -> self.modifyValidationF(se, f).f(s).map(Either.left_()), | | 225 | + s1 -> other.modifyValidationF(se, f).f(s1).map(Either.right_()) | 225 | 226 | ); | 226 | 227 | } | 227 | 228 |
| @@ -307,8 +308,8 @@ public F<S, P1<T>> modifyP1F(final F<C, P1<D>> f) { | 307 | 308 | } | 308 | 309 |
| 309 | 310 | @Override | 310 | | - public <E> F<S, Validation<E, T>> modifyValidationF(final F<C, Validation<E, D>> f) { | 311 | | - return self.modifyValidationF(other.modifyValidationF(f)); | | 311 | + public <E> F<S, Validation<E, T>> modifyValidationF(Semigroup<E> s, final F<C, Validation<E, D>> f) { | | 312 | + return self.modifyValidationF(s, other.modifyValidationF(s, f)); | 312 | 313 | } | 313 | 314 |
| 314 | 315 | @Override | @@ -450,7 +451,7 @@ public F<Either<S, S>, V2<Either<T, T>>> modifyV2F(final F<S, V2<T>> f) { | 450 | 451 | } | 451 | 452 |
| 452 | 453 | @Override | 453 | | - public <E> F<Either<S, S>, Validation<E, Either<T, T>>> modifyValidationF(final F<S, Validation<E, T>> f) { | | 454 | + public <E> F<Either<S, S>, Validation<E, Either<T, T>>> modifyValidationF(Semigroup<E> se, final F<S, Validation<E, T>> f) { | 454 | 455 | return s -> s.bimap(f, f).either( | 455 | 456 | v -> v.map(Either.left_()), | 456 | 457 | v -> v.map(Either.right_()) | @@ -520,8 +521,8 @@ public F<S, V2<T>> modifyV2F(final F<A, V2<B>> f) { | 520 | 521 | } | 521 | 522 |
| 522 | 523 | @Override | 523 | | - public <E> F<S, Validation<E, T>> modifyValidationF(final F<A, Validation<E, B>> f) { | 524 | | - return s -> f.f(get2.f(s)).apply(f.f(get1.f(s)).<F<B, T>> map(b1 -> b2 -> set.f(b1, b2, s))); | | 524 | + public <E> F<S, Validation<E, T>> modifyValidationF(Semigroup<E> se, final F<A, Validation<E, B>> f) { | | 525 | + return s -> f.f(get2.f(s)).accumapply(se, f.f(get1.f(s)).<F<B, T>> map(b1 -> b2 -> set.f(b1, b2, s))); | 525 | 526 | } | 526 | 527 |
| 527 | 528 | @Override | @@ -611,8 +612,8 @@ public F<S, V2<T>> modifyV2F(final F<A, V2<B>> f) { | 611 | 612 | } | 612 | 613 |
| 613 | 614 | @Override | 614 | | - public <E> F<S, Validation<E, T>> modifyValidationF(final F<A, Validation<E, B>> f) { | 615 | | - return s -> f.f(lastGet.f(s)).apply(curriedTraversal.modifyValidationF(f).f(s)); | | 615 | + public <E> F<S, Validation<E, T>> modifyValidationF(Semigroup<E> se, final F<A, Validation<E, B>> f) { | | 616 | + return s -> f.f(lastGet.f(s)).accumapply(se, curriedTraversal.modifyValidationF(se, f).f(s)); | 616 | 617 | } | 617 | 618 |
| 618 | 619 | @Override | |
Collapse file Copy file name to clipboardExpand all lines: core/src/main/java/fj/data/optic/Traversal.java +3-2Lines changed: 3 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
| 8 | 8 | import fj.F7; | 9 | 9 | import fj.Monoid; | 10 | 10 | import fj.P1; | | 11 | +import fj.Semigroup; | 11 | 12 | import fj.control.Trampoline; | 12 | 13 | import fj.control.parallel.Promise; | 13 | 14 | import fj.data.Either; | @@ -72,8 +73,8 @@ public F<S, P1<S>> modifyP1F(final F<A, P1<A>> f) { | 72 | 73 | } | 73 | 74 |
| 74 | 75 | @Override | 75 | | - public <E> F<S, Validation<E, S>> modifyValidationF(final F<A, Validation<E, A>> f) { | 76 | | - return pTraversal.modifyValidationF(f); | | 76 | + public <E> F<S, Validation<E, S>> modifyValidationF(Semigroup<E> s, final F<A, Validation<E, A>> f) { | | 77 | + return pTraversal.modifyValidationF(s, f); | 77 | 78 | } | 78 | 79 |
| 79 | 80 | @Override | |
|