Это можно сделать довольно чисто, используя sliding
:
myList.head :: myList.sliding(2).collect { case Seq(a,b) if a != b => b }.toList
Он смотрит на все пары, и для каждой пары несогласования (a,b)
он возвращает вас b
. Но тогда он должен придерживаться оригинала a
в начале списка.