Ответ 1
foldRight
со сложным аргументом, как правило, является признаком того, что вы могли бы написать это с помощью рекурсии, а также использовать его для своего метода, пока вы на нем. Вот что я придумал. Во-первых, позвольте обобщить
к общему методу, groupPrefix:
/** Returns shortest possible list of lists xss such that
* - xss.flatten == xs
* - No sublist in xss contains an element matching p in its tail
*/
def groupPrefix[T](xs: List[T])(p: T => Boolean): List[List[T]] = xs match {
case List() => List()
case x :: xs1 =>
val (ys, zs) = xs1 span (!p(_))
(x :: ys) :: groupPrefix(zs)(p)
}
Теперь вы получите результат, просто позвонив
groupPrefix(input)(_ matches """\d+\)""")