cats.syntax
Example:
scala> import cats.implicits._ scala> val a: Int = 10 scala> a.tailRecM[Option,String](i => if (i == 20) Some(Right("done")) else Some(Left(i+1))) res0: Option[String] = Some(done)