def example6 =
val io1 = IO("Scala6")
val io2 = IO("Cats6")
val listTraverse = Traverse[List] // a typeclass instance -> import cats.implicits.toTraverseOps
val ioList: List[IO[String]] = List(io1, io2)
val insideOutIOs: IO[List[String]] = listTraverse.sequence(ioList)
// is equal to the sequence-method:
// val seqAsTraverse: IO[List[String]] = listTraverse.traverse(ioList)(identity)
val traversedList: IO[List[String]] = listTraverse.traverse(ioList)(io => io.map(_ + "!"))
traversedList.trace
Due to the import, no typeclass instance is needed anymore!
def example7 =
import cats.implicits.toTraverseOps
val io1 = IO("Scala7")
val io2 = IO("Cats7")
val ioList: List[IO[String]] = List(io1, io2)
val insideOutIOs: IO[List[String]] = ioList.sequence
val traversedList: IO[List[String]] = ioList.traverse(io => io.map(_ + "!"))
traversedList.trace
sammo90
Should read: