Читаю книжку Zeller "Why Programs Fail", про отладку, и в первой же главе есть пассаж, показывающий превосходство Clojure над ~другими жалкими коллекти~ языками, где состояние разбросано по всей программе:
"Why is understanding the failure so difficult? Considering Figure 1.1, all one need do to find the defect is isolate the transition from a sane state (i.e., noninfected, as intended) to an infected state. This is a search in space (as we have to find out which part of the state is infected) as well as in time (as we have to find out when the infection takes place).
However, examination of space and time are enormous tasks for even the simplest programs. Each state consists of dozens, thousands, or even millions of variables. For example, Figure 1.2 shows a visualization of the program state of the GNU compiler (GCC) while compiling a program. The program state consists of about 44,000 individual variables, each with a distinct value, and about 42,000 references between variables."