aboutsummaryrefslogtreecommitdiff
path: root/src/client/Utils/List.elm
blob: cc57d9fc4ea51acace5e846d6804d019c2894694 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Utils.List exposing
  ( groupBy
  , mean
  )

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

mean : List Int -> Int
mean xs = (List.sum xs) // (List.length xs)