Suppose I need to zip three lists to get a list of triplets. I can write it like that:
import cats._
import cats.data._
import cats.implicits._
(List(1, 2) |@| List(3, 4) |@| List(5, 6)) map {case (a, b, c) => (a, b, c)}
res1: List[(Int, Int, Int)] = List((1,3,5), (1,3,6), (1,4,5), (1,4,6), (2,3,5), (2,3,6), (2,4,5), (2,4,6))
Can you simplify it ?