Подсчет всех элементов в списке является однострочным в Haskell:
count xs = toList (fromListWith (+) [(x, 1) | x <- xs])
Вот пример использования:
*Main> count "haskell scala"
[(' ',1),('a',3),('c',1),('e',1),('h',1),('k',1),('l',3),('s',2)]
Можно ли так элегантно выразить эту функцию в Scala?