私は次のように2つのマップを持っています。
import scalaz._, Scalaz._
val map1: Map[String, Seq[String]] = Some value
val map2: Map[String, Seq[String]] = Somve Value
これは正常にコンパイルされ、すべてが期待どおりに機能します。
// Compiles
map1.mapValues{_.toList} |+| map2.mapValues{_.toList}
しかし、これはコンパイルされません (シンボルを解決できません|+|
)。
// Doesn't compile
map1 |+| map2
更新: コンパイル エラーが発生する理由に答えるこの素晴らしい記事を見つけました。これは基本的に、コメント セクションで言及されている人々のようにSeq
、モノイドではありません:リストはセミグループですが、Seq はそうではありませんか?
ここで私の質問は次のとおりです。つまり、Seq
(IndexedSeq
同じ問題を抱えている)を変換し、再びList
元に戻す必要があるということですか ( s は実際にはあり、パフォーマンス上の理由から保持する必要があります)。独自のマップ マージ コードを作成する以外に、これを回避する方法はありますか?Seq
Seq
IndexedSeq
IndexedSeq