blob: 4886418d290fdbf4ee49517acf8c3265ddbf2552 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
module Utils.List exposing
( groupBy
)
import Dict
groupBy : (a -> comparable) -> List a -> List (comparable, List a)
groupBy f xs =
let addItem item dict =
let groupItems = Dict.get (f item) dict |> Maybe.withDefault []
in Dict.insert (f item) (item :: groupItems) dict
in List.foldr addItem Dict.empty xs
|> Dict.toList
|