diff --git a/core/src/main/scala/scalaz/Map.scala b/core/src/main/scala/scalaz/Map.scala index 94b0ac715b..72fb900764 100644 --- a/core/src/main/scala/scalaz/Map.scala +++ b/core/src/main/scala/scalaz/Map.scala @@ -1007,6 +1007,10 @@ sealed abstract class ==>>[A, B] { } sealed abstract class MapInstances0 { + implicit def mapBand[A, B](implicit A: Order[A], B: Band[B]): Band[A ==>> B] = new Band[A ==>> B] { + def append(a: A ==>> B, b: => A ==>> B): A ==>> B = + (a unionWith b)(B.append(_, _)) + } implicit def scalazMapInstance[S: Order]: Bind[S ==>> ?] with Align[S ==>> ?] with Zip[S ==>> ?] = new Bind[S ==>> ?] with Align[S ==>> ?] with Zip[S ==>> ?] { diff --git a/tests/src/test/scala/scalaz/MapTest.scala b/tests/src/test/scala/scalaz/MapTest.scala index aeca3b02d2..b60771e0f2 100644 --- a/tests/src/test/scala/scalaz/MapTest.scala +++ b/tests/src/test/scala/scalaz/MapTest.scala @@ -971,6 +971,7 @@ object MapTest extends SpecLite { checkAll(order.laws[Int ==>> Int]) checkAll(monoid.laws[Int ==>> Int]) + checkAll(band.laws[Int ==>> ISet[Int]]) { implicit def equMapConj[A: Equal, B: Equal]: Equal[(A ==>> B) @@ Tags.Conjunction] =