31 Jul
2009
31 Jul
'09
8:53 p.m.
Gregory Collins <greg@gregorycollins.net> writes:
Paul Moore <p.f.moore@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
Here "foldl" should be "foldl'" (d'oh!) G -- Gregory Collins <greg@gregorycollins.net>