Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
The notion of program state is a broad one with a long history, but in general, it refers to all of the scalars and aggregate data structures that you use to represent entities within your application, along with all of the connections that your application maintains with the external world (such as open files, sockets, and so on). Much of the character of a programming language is determined by its posture toward handling state: what it provides, what it prevents, and what it encourages.
Most programming languages, either through idiom or explicit design, encourage the use of mutable state, whether within the guise of objects or not. Functional programming languages tend to encourage the use of immutable objects—referred to as values—to represent program state. Clojure is no different in this respect.