Without too much surprise, a functional language is specifically good at providing developers with tools and syntax support for creating and composing functions. This chapter groups together the functions in the Clojure standard library that are dedicated to manipulate or generate other functions. The chapter splits them into 4 broad categories:
- Function Definition. A function is the fundamental unit of composition in Clojure. This section contains the main macros dedicated to declaring new functions.
- Higher order functions. This section describes functions and macros whose main goal is to produce new functions guided by an user defined computation or other existing definitions.
- Threading macros. This important group of macros gives Clojure a visually appealing syntax to describe processing pipelines.
- Function execution. Finally, another group of functions dedicated to manage the execution of other functions.
Other functions and macros exist that can be categorized using the same criteria, but in this initial "fundamental" chapter, we concentrate on the most important ones while others are described in other parts of the book.