В ответ на вопрос «что, если у меня более 3 списков?»:
def combineAll[T](xss: Seq[T]*)(f: (T, T) => T) =
xss reduceLeft ((_,_).zipped map f)
Используйте вот так:
scala> combineAll(List(1,2,3), List(2,2,2), List(4,5,6), List(10,10,10))(_+_)
res5: Seq[Int] = List(17, 19, 21)
edit: в качестве альтернативы
def combineAll[T](xss: Seq[T]*)(f: (T, T) => T) =
xss.transpose map (_ reduceLeft f)
делает то же самое и, вероятно, более эффективно.