Is there an extension method in cats for the standard Set
which converts it to Option[cats.data.NonEmptySet]
?
Not for scala.collection.immutable.Set
, but for 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))
You can of course convert an ordinary Set
:
scala> Set(1, 2, 3).to[SortedSet].toNes
res1: Option[cats.data.NonEmptySet[Int]] = Some(TreeSet(1, 2, 3))
Cats's NonEmptySet
isn't built on Set
(and Cats doesn't provide syntax for Set
) because Set
relies on universal equality to determine what counts as uniqueness for its elements. SortedSet
on the other hand requires a scala.math.Ordering
instance, which makes it more aligned with the design principles followed in Cats (see e.g. this issue for more discussion).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With