blob: 85cdc24a7e45b24d5691b3c098c186e9f912ef91 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
module Utils.List
( groupBy
) where
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
|