This is the 3rd post in the From Imperative to Functional Programming focus series. There's a whole category of problems related to grouping e.g.: Given a collection of person, return a list of pairs with the first value the age, and the second one the collection of persons of that age. Given a collection of orders, return a list of pairs with some price range _e.g._ $0-$100, $101-$200, etc. as the first value, and the number of such orders as the second one. Given a collection of words, return a