0

私は次のように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 は実際にはあり、パフォーマンス上の理由から保持する必要があります)。独自のマップ マージ コードを作成する以外に、これを回避する方法はありますか?SeqSeqIndexedSeqIndexedSeq

4

0 に答える 0