Рассмотрим:
с использованием дополнительной (простой Scala) функции с подписью List[Int] => List[(Int, Int)]
для достижения желаемого результата для единого списка
и
передача этой функции методу flatMap
вашего СДР.
Эта дополнительная функция может выглядеть следующим образом:
def makeTuples(l: List[Int],
acc: List[(Int, Int)] = List.empty): List[(Int, Int)] =
l match {
case Nil | _ :: Nil => acc.reverse
case a :: b :: rest => makeTuples(b :: rest, (a, b) :: acc)
}