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 functionand 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  ▪  ...