Clojure is a functional language, so it provides certain features you would expect to find in other functional programming (FP) languages, such as the following:
Immutability
Referential transparency
First-class functions
Partial application
Recursive iteration
Composability
Let’s take a moment to consider each of these features.
Immutability
The idea behind immutability is that it is used when we wish to avoid “mutating state .” What that really means is that it helps us to avoid changing data that might be used by multiple (separate) areas of a program.
If you have state and it can change, ...