Taking an operation as input

A function can receive not only numbers or text but another function describing what to do with them. A higher-order operation places that varying behavior in a parameter. One traversal can then square each item or convert it to text without rewriting the traversal and result-collection machinery for each case.

References: [1]

Sharing a computational pattern

Mapping transforms elements, filtering keeps elements satisfying a predicate, and folding accumulates a result through a combining operation. These represent different computational patterns, not interchangeable names. Selecting the appropriate abstraction can make the relationship among data and operations clearer than embedding the entire computation inside repeated loop mechanics.

References: [2]

Returning specialized functions

A higher-order function can fix part of a configuration and return a function accepting the remaining input. Retaining outer bindings involves closures and environments. Higher-order describes the presence of functions among inputs or results; it does not mean that the algorithm must be complicated or have one particular type-system formulation.

References: [1]

Effects and evaluation order

Supplied functions may perform input-output, mutate state, or raise exceptions. A higher-order form therefore does not guarantee purity, parallel execution, or freedom from failure. Laziness and callback order depend on the language and interface. The abstraction must still be understood together with its specified execution behavior and effects.

References: [2]