Functional Programming

Functional programming is a highly developed and deeply integrated core feature of the Wolfram Language, made dramatically richer and more convenient through the symbolic nature of the language. Treating expressions like f[x] as both symbolic data and the application of a function f 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. (#+1)&)

#, ##, #name — slots for variables in a pure function

Map (/@) — map across a list: f/@{x,y,z}⟶{f[x],f[y],f[z]}

Apply (@@, @@@) — apply to a list: f@@{x,y,z}⟶f[x,y,z]

MapIndexed — map with index information: {f[x,{1}],f[y,{2}],f[z,{3}]}

MapThread ▪ MapAt ▪ MapAll ▪ Scan ▪ BlockMap ▪ SubsetMap ▪ ...

Nest, NestList, NestGraph — nest a function: f[f[f[x]]] etc.

Fold, FoldList — fold in a list of values: f[f[f[x,1],2],3] etc.

SequenceFold ▪ SequenceFoldList ▪ FoldPair ▪ FoldPairList

FixedPoint, FixedPointList — repeatedly nest until a fixed point

NestWhile ▪ NestWhileList ▪ TakeWhile ▪ LengthWhile ▪ ...

Select — select from a list according to a function

Array — create an array from a function

SortBy ▪ MaximalBy ▪ SplitBy ▪ GatherBy ▪ ...

AssociationMap — create an association from a function

KeySortBy ▪ CountsBy ▪ GroupBy ▪ ...

Identity ▪ Composition ▪ ReverseApplied ▪ Operate ▪ Through ▪ ...

OperatorApplied — make a function be applied in operator form

CurryApplied ▪ Select ▪ Cases ▪ Append ▪ Map ▪ Position ▪ ...