  Being declarative means that we do computer programming on higher levels of
abstraction. This vague definition identifies declarativeness with the act of
ignoring details, but it is a special case of abstraction. The unspecified part
is some computational work. Automating computations and offloading mental
processing are essentially the same concept, which is fundamental for both
computational and mathematical thinking. This shows that declarativeness is not
just a particular style, but it is the core idea of programming. Here we
demonstrate this argument and examine its consequences for teaching by a
systematic study of coding examples from an introductory programming course.
The chosen language is Clojure, as it is proven to be accessible for novices.
