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.
Function (
&) — specify a pure function (e.g.

)
#,
## — slots for variables in a pure function
MapIndexed — map with index information:

Fold,
FoldList — fold in a list of values:

etc.
FixedPoint,
FixedPointList — repeatedly nest until a fixed point
Select — select from a list according to a function
Array — create an array from a function
Sort,
Split — sort, split according to a function