Scalaz будет использовать SortedMap, если вторым аргументом является SortedMap (как в scala коллекциях), но это детали реализации, и вам не следует полагаться на него.
//If you only care about `Map` inteface then treat `SortedMap` as normal `Map`:
val res = Map(1 -> 1) |+| SortedMap(1 -> 1)
println(res.getClass.getName) // scala.collection.immutable.TreeMap
//If you really need to have access to SortedMap api then you can cast to it:
val res2 = res.asInstanceOf[SortedMap[Int, Int]]
EDITED This это детали реализации, и вы должны знать об этом! Должен быть лучший ответ на этот вопрос, который использует существующую реализацию скалаза для sortedMap!
У меня нет времени исследовать больше ... sory.
ключ здесь, что мы используем to
экземпляр в качестве компоновщика для результата здесь.
//from implementation of |+|
from.foldLeft(to) { case (to, (k, v)) => to + ... }
в скором времени : не отмечайте этот ответ как действительный: это не так. Возможно, вам не следует полагаться на детали реализации. Тем не менее, это возможно, и этот ответ может быть полезен для кого-то.