Не для scala.collection.immutable.Set
, но для SortedSet
:
scala> import cats.syntax.set._
import cats.syntax.set._
scala> import scala.collection.immutable.SortedSet
import scala.collection.immutable.SortedSet
scala> SortedSet(1, 2, 3).toNes
res0: Option[cats.data.NonEmptySet[Int]] = Some(TreeSet(1, 2, 3))
Вы, конечно, можете конвертировать обычные Set
:
scala> Set(1, 2, 3).to[SortedSet].toNes
res1: Option[cats.data.NonEmptySet[Int]] = Some(TreeSet(1, 2, 3))
Кошачьи NonEmptySet
isn 't построен на Set
(а Cats не предоставляет синтаксис для Set
), потому что Set
полагается на универсальное равенство для определения того, что считается уникальностью для его элементов.SortedSet
, с другой стороны, требуется экземпляр scala.math.Ordering
, что делает его более согласованным с принципами проектирования, применяемыми в Cats (см., Например, этот вопрос для дальнейшего обсуждения).