title: How to sequence Either with Scala cats without a type alias (see Herding cats)
body: <p>I was reading <a href="http://eed3si9n.com/herding-cats/Traverse.html" rel="nofollow noreferrer">Herding Cats</a></p>
  
  <p>The final example on the <a href="http://eed3si9n.com/herding-cats/Traverse.html" rel="nofollow noreferrer">Traverse page</a> on sequencing List of Either failed for me.</p>
  
  <p>in the example they do this:- </p>
  
  <pre><code>scala&gt; List(Right(1): Either[String, Int]).sequence
  res5: Either[String,List[Int]] = Right(List(1))
  scala&gt; List(Right(1): Either[String, Int], Left("boom"): Either[String, Int]).sequence
  res6: Either[String,List[Int]] = Left(boom)
  </code></pre>
  
  <p>But When I try I get the following error:- </p>
  
  <pre><code>scala&gt; import cats._, cats.data._, cats.implicits._
  scala&gt; val les = List(Right(3):Either[String,Int], Right(2):Either[String,Int])
  scala&gt; les.sequence
  &lt;console&gt;:37: error: Cannot prove that Either[String,Int] &lt;:&lt; G[A].
  les.sequence
     ^
  </code></pre>
  
  <p>But when I help out the compiler with a type alias to fix the Left type all is good:-</p>
  
  <pre><code>scala&gt; type XorStr[X] = Either[String,X]
  defined type alias XorStr
  
  scala&gt; val les = List(Right(3):XorStr[Int], Right(2):XorStr[Int])
  les: List[XorStr[Int]] = List(Right(3), Right(2))
  
  scala&gt; les.sequence
  res0: XorStr[List[Int]] = Right(List(3, 2))
  </code></pre>
  
  <p>So my question is how do I get the type inference to do the right thing to make the example work without having to introduce the type alias?</p>
  
  <p>Have I missed a crucial implicit import to work with Either[A,B] ?</p>
  
  <p>Thanks
  Karl</p>