Одно из преимуществ несоблюдения коллекций по индексам - избегать ошибок. Это, конечно, не единственное преимущество, но это один из них.
 Теперь я часто использую sliding в некоторых алгоритмах в Scala, но я чувствую, что это обычно приводит к чему-то очень похожим на ошибки "за собой", поскольку sliding m элементов в наборе размера n имеет размер n - m + 1 элемент. Или, что более тривиально, list sliding 2 - это один элемент, меньший, чем list.
 Чувство, которое я получаю, состоит в том, что в этом шаблоне отсутствует абстракция, что-то, что будет частью sliding, часть чего-то большего - например foldLeft - to reduceLeft. Однако я не могу придумать, что это может быть. Может ли кто-нибудь помочь мне найти просветление здесь?
ОБНОВИТЬ
 Поскольку люди не ясно, что я говорю, рассмотрим этот случай. Я хочу использовать строку. В принципе, каждая буква, которой не предшествует буква, должна быть в верхнем регистре, а все остальные буквы должны быть строчными. Используя sliding, я должен использовать специальный случай либо первую, либо последнюю букву. Например:
def capitalize(s: String) = s(0).toUpper +: s.toSeq.sliding(2).map {
  case Seq(c1, c2) if c2.isLetter => if (c1.isLetter) c2.toLower else c2.toUpper
  case Seq(_, x) => x
}.mkString