zipWith function in Scala
How about this?

def zipWith[A, B](ts: Traversable[Traversable[A]])(f: Traversable[A] =&gt; B): Traversable[B] = {
  ts.transpose.map(f)
}


Example:

scala&gt; zipWith(input)(_.mkString("::"))
res10: Traversable[String] = List(1::4::7, 2::5::8, 3::6::9)