Я определил экземпляр Monoid для Map[Int, Array[Int]]
и попытался использовать его для объединения списка таких карт:
import cats.Monoid
import cats.implicits._
implicit val m: Monoid[Map[Int, Array[Int]]] = Monoid[Map[Int, Array[Int]]]
List(
Map(
(0 -> Array(8, 9))
),
Map(
(0 -> Array(10))
),
Map(
(1 -> Array(30))
),
).foldMap(identity)
Я ожидаю, что результат будет следующим:
Map(
(0 -> Array(8, 9, 10),
(1 -> Array(30),
)
Однако код выдает следующее исключение:
[error] java.lang.NullPointerException
[error] at cats.instances.ListInstances$$anon$1.foldMap(list.scala:74)
[error] at cats.instances.ListInstances$$anon$1.foldMap(list.scala:16)
[error] at cats.Foldable$Ops.foldMap(Foldable.scala:31)
[error] at cats.Foldable$Ops.foldMap$(Foldable.scala:31)
[error] at cats.Foldable$ToFoldableOps$$anon$5.foldMap(Foldable.scala:31)
Я попытался использовать .reduce(_ |+| _)
или m.combineAll
вместо .foldMap(identity)
, с тем же результатом. Что я делаю не так?