scalafunctional-programmingscalazscala-cats

List[Try[T]] to Try[List[T]] in Scala


I would like to know how to convert a List[Try[T]] into Try[List[T]] in Scala?

I have tried using an accumulator and folding right but it doesn't seem ideal.


Solution

  • Using cats it's as easy as:

    import cats._
    import cats.data._
    import cats.implicits._
    import scala.util.{Try, Success, Failure}
    
    val tries: List[Try[Int]] = List(Success(1), Success(2), Success(3))
    tries.sequence
    

    More information in the Traverse docs.