aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/Utils/List.elm
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