Como sequenciar com gatos Scala sem um alias de tipo (consulte Pastando gatos)

eu estava lendoPastoreio de gatos

O exemplo final noPágina transversal no seqüenciamento Lista de qualquer um falhou para mim.

no exemplo, eles fazem isso: -

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)

Mas quando tento, recebo o seguinte erro: -

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
   ^

Mas quando ajudo o compilador com um alias de tipo para corrigir o tipo Left tudo fica bem: -

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))

Portanto, minha pergunta é como faço para que a inferência de tipo faça a coisa certa para fazer o exemplo funcionar sem precisar introduzir o alias de tipo?

Perdi uma importação implícita crucial para trabalhar com o [A, B]?

Obrigado Karl

questionAnswers(1)

yourAnswerToTheQuestion