Paul Moore <p.f.mo...@gmail.com> writes:

> How would I efficiently write a function in Haskell to count
> occurrences of unique elements in a (potentially very large) list? For
> example, given the list [1,2,3,4,5,3,4,2,4] I would like the output
> [[1,1], [2,2], [3,2], [4,3], [5,1]] (or some equivalent
> representation).

    import qualified Data.Map as Map
    import           Data.Map (Map)
    
    histogram :: Ord a => [a] -> [(a,Int)]
    histogram = Map.assocs . foldl f Map.empty
      where
        f m k = Map.insertWith (+) k 1 m

G.
-- 
Gregory Collins <g...@gregorycollins.net>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to