Long viewed as an important theoretical idea, functional programming finally became truly convenient and practical with the introduction of Mathematica's symbolic language. Treating expressions like as both symbolic data and the application of a function provides a uniquely powerful way to integrate structure and function—and an efficient, elegant representation of many common computations.
MapIndexed — map with index information:
Select — select from a list according to a function
Array — create an array from a function