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
Applying Functions to Lists »
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]
MapApply (@@@) — apply to a list: f@@@{x,y,z}⟶{f@@x,f@@y,f@@z}
MapIndexed — map with index information: {f[x,{1}],f[y,{2}],f[z,{3}]}
MapThread ▪ MapAt ▪ MapAll ▪ Scan ▪ BlockMap ▪ SubsetMap ▪ ...
Applying Lists of Functions to Arguments
Comap — comap into a list: Comap[{f,g,h},x]⟶{f[x],g[x],h[x]}
ComapApply — use multivariate heads: ComapApply[{f,g,…},x]⟶{f@@x,g@@x,…}
Iteratively Applying Functions »
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 ▪ FoldWhile ▪ ...
FixedPoint, FixedPointList — repeatedly nest until a fixed point
NestWhile ▪ NestWhileList ▪ TakeWhile ▪ LengthWhile ▪ ...
List-Oriented Functions »
Select — select from a list according to a function
Array — create an array from a function
SortBy ▪ MaximalBy ▪ SplitBy ▪ GatherBy ▪ ...
Association-Oriented Functions »
AssociationMap — create an association from a function
KeySortBy ▪ CountsBy ▪ GroupBy ▪ ...
Functional Composition »
Identity ▪ Composition ▪ ReverseApplied ▪ Operate ▪ Through ▪ ...
"Curried" Operator Forms »
OperatorApplied — make a function be applied in operator form
CurryApplied ▪ Select ▪ Cases ▪ Append ▪ Map ▪ Position ▪ ...