Currying and partial application
The second feature that aids in creating new functions as parameters to HOFs is currying. Currying is named after Haskell B. Curry, the logician after whom the Haskell language is named, even though Curry attributed the concept of currying to the logician Moses Schönfinkel; in fact, the first known application predates both and is credited to a third logician, Gottlob Frege. It is based on an idea that greatly simplifies the design and mechanics of a functional programming language, possibly requiring a revision of your current mental model of Haskell. The idea is that functions need not have more than one parameter. Whenever we want to write a multi-parameter function, we can simulate it instead by means of single-parameter functions. This idea features in the lambda calculus, as it serves its minimality objective. As we will now see, Haskell too has currying built in.
One parameter is enough
Let us revisit the very first two-parameter function...