Cómo secuenciar con gatos Scala sin un alias de tipo (ver Pastoreo de gatos)

Estaba leyendoArrear gato

El ejemplo final en elPágina transversal en la secuencia La lista de cualquiera de los dos falló para mí.

en el ejemplo hacen esto: -

scala> List(Right(1): Either[String, Int]).sequence
res5: Either[String,List[Int]] = Right(List(1))
scala> List(Right(1): Either[String, Int], Left("boom"): Either[String, Int]).sequence
res6: Either[String,List[Int]] = Left(boom)

Pero cuando lo intento me sale el siguiente error: -

scala> import cats._, cats.data._, cats.implicits._
scala> val les = List(Right(3):Either[String,Int], Right(2):Either[String,Int])
scala> les.sequence
<console>:37: error: Cannot prove that Either[String,Int] <:< G[A].
les.sequence
   ^

Pero cuando ayudo al compilador con un alias de tipo para arreglar el tipo Left, todo está bien: -

scala> type XorStr[X] = Either[String,X]
defined type alias XorStr

scala> val les = List(Right(3):XorStr[Int], Right(2):XorStr[Int])
les: List[XorStr[Int]] = List(Right(3), Right(2))

scala> les.sequence
res0: XorStr[List[Int]] = Right(List(3, 2))

Así que mi pregunta es ¿cómo obtengo la inferencia de tipos para hacer lo correcto para que el ejemplo funcione sin tener que introducir el alias de tipo?

¿Me perdí una importación implícita crucial para trabajar con cualquiera [A, B]?

Gracias Karl

Respuestas a la pregunta(1)

Su respuesta a la pregunta