diff --git a/core/src/main/scala/cats/NonEmptyTraverse.scala b/core/src/main/scala/cats/NonEmptyTraverse.scala index cc7516269d..64527ef97c 100644 --- a/core/src/main/scala/cats/NonEmptyTraverse.scala +++ b/core/src/main/scala/cats/NonEmptyTraverse.scala @@ -53,9 +53,8 @@ import simulacrum.typeclass * {{{ * scala> import cats.implicits._ * scala> import cats.data.NonEmptyList - * scala> def countWords(words: List[String]): Map[String, Int] = words.groupBy(identity).mapValues(_.length) * scala> val x = NonEmptyList.of(List("How", "do", "you", "fly"), List("What", "do", "you", "do")) - * scala> x.nonEmptyFlatTraverse(_.groupByNel(identity)) + * scala> x.nonEmptyFlatTraverse(_.groupByNel(identity) : Map[String, NonEmptyList[String]]) * res0: Map[String,cats.data.NonEmptyList[String]] = Map(do -> NonEmptyList(do, do, do), you -> NonEmptyList(you, you)) * }}} */ diff --git a/core/src/main/scala/cats/syntax/list.scala b/core/src/main/scala/cats/syntax/list.scala index f8f21cf445..b8e31dc83e 100644 --- a/core/src/main/scala/cats/syntax/list.scala +++ b/core/src/main/scala/cats/syntax/list.scala @@ -1,6 +1,7 @@ package cats package syntax +import scala.collection.immutable.SortedMap import cats.data.NonEmptyList trait ListSyntax { @@ -27,6 +28,8 @@ final class ListOps[A](val la: List[A]) extends AnyVal { * }}} */ def toNel: Option[NonEmptyList[A]] = NonEmptyList.fromList(la) - def groupByNel[B : Order](f: A => B): Map[B, NonEmptyList[A]] = - toNel.fold(Map.empty[B, NonEmptyList[A]])(_.groupBy(f)) + def groupByNel[B](f: A => B)(implicit B: Order[B]): SortedMap[B, NonEmptyList[A]] = { + implicit val ordering = B.toOrdering + toNel.fold(SortedMap.empty[B, NonEmptyList[A]])(_.groupBy(f)) + } }