1

私はマップを使用して特定の値をタプル (Int、Double) に関連付けています。ここで、int は表示される順序であり、表示される回数の 2 倍です (そうではありませんが、int と double を使用して区別するのがより明確です)。 )

トリッキーな部分は、タプルの各要素に異なるモノイドを使用したいことです。int の場合は最小値を保持し、最初の出現を記憶したいのに対し、double の場合は加算モノイドを使用したいので、既存のキーには我々は持っています:

val map1 = Map("a" -> (1, 5.0), "b" -> (2, 4.0), "c" -> (3, 8.0))
val map2 = Map("b" -> (4, 1.0))

val merge = map1.toMap |+| map2.toMap
// Map(a -> (1, 5.0), b -> (2, 5.0), c -> (3, 8.0))

そして、新しいキーには次のものがあります。

val map2 = Map("d" -> (4, 1.0))

val merge2 = map1.toMap |+| map2.toMap
// Map(a -> (1, 5.0), b -> (2, 4.0), c -> (3, 8.0), d -> (4, 1.0))

私はこれを行う方法を見つけることができません.私は明らかに加算モノイドを使用することができ、私はminvalのものを使用できますが、それらを組み合わせる方法がわかりません. どんな助けでも大歓迎です!ありがとう

4

2 に答える 2