Вот более эффективная, идиоматическая c, обобщенная c и более простая реализация вашего алгоритма.
// This works for any type as long as we know how to compare instances of it.
def compareTriplets[T : Ordering](as: List[T], bs: List[T]): (Int, Int) = {
import Ordering.Implicits._ // Provides the comparison operators.
(as lazyZip bs).foldLeft((0, 0)) {
case ((aCount, bCount), (a, b)) =>
if (a > b) (aCount + 1, bCount)
else if (a < b) (aCount, bCount + 1)
else (aCount, bCount)
}
}