Skip to content

Commit 02bfdf7

Browse files
authored
Merge pull request #4676 from joroKr21/align-with
Use alignWith in alignMergeWith
2 parents 7a30dc2 + 0c7adab commit 02bfdf7

3 files changed

Lines changed: 7 additions & 7 deletions

File tree

core/src/main/scala/cats/Align.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ trait Align[F[_]] extends Serializable {
8484
* }}}
8585
*/
8686
def alignMergeWith[A](fa1: F[A], fa2: F[A])(f: (A, A) => A): F[A] =
87-
functor.map(align(fa1, fa2))(_.mergeWith(f))
87+
alignWith(fa1, fa2)(_.mergeWith(f))
8888

8989
/**
9090
* Same as `align`, but forgets from the type that one of the two elements must be present.

laws/src/main/scala/cats/laws/AlignLaws.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ trait AlignLaws[F[_]] {
4545
def alignWithConsistent[A, B, C](fa: F[A], fb: F[B], f: A Ior B => C): IsEq[F[C]] =
4646
fa.alignWith(fb)(f) <-> fa.align(fb).map(f)
4747

48+
def alignMergeWithConsistent[A](fa1: F[A], fa2: F[A], f: (A, A) => A): IsEq[F[A]] =
49+
fa1.alignMergeWith(fa2)(f) <-> fa1.align(fa2).map(_.mergeWith(f))
50+
4851
private def assoc[A, B, C](x: Ior[A, Ior[B, C]]): Ior[Ior[A, B], C] =
4952
x match {
5053
case Left(a) => Left(Left(a))

laws/src/main/scala/cats/laws/discipline/AlignTests.scala

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,9 @@ trait AlignTests[F[_]] extends Laws {
5454
name = "align",
5555
parent = None,
5656
"align associativity" -> forAll(laws.alignAssociativity[A, B, C] _),
57-
"align homomorphism" -> forAll { (fa: F[A], fb: F[B], f: A => C, g: B => D) =>
58-
laws.alignHomomorphism[A, B, C, D](fa, fb, f, g)
59-
},
60-
"alignWith consistent" -> forAll { (fa: F[A], fb: F[B], f: A Ior B => C) =>
61-
laws.alignWithConsistent[A, B, C](fa, fb, f)
62-
}
57+
"align homomorphism" -> forAll(laws.alignHomomorphism[A, B, C, D] _),
58+
"alignWith consistent" -> forAll(laws.alignWithConsistent[A, B, C] _),
59+
"alignMergeWith consistent" -> forAll(laws.alignMergeWithConsistent[A] _)
6360
)
6461
}
6562

0 commit comments

Comments
 (0)