Introduction
Dealing with collections of data is one of the most common and powerful parts of programming. Whether they are called lists, arrays, or vectors, sequential collections are at the heart of almost every program. Every programming language provides tools for creating, accessing, and modifying collections, and, often, what you've learned in one language will apply to the others. Clojure is different, however. We are accustomed to setting a variable and then controlling some other part of the system by changing the value of that variable.
This is what happens in a for
loop in most procedural languages. Say that we have an iterator, i
, that we increment by calling i++
. Changing the value of the iterator controls the flow of the loop. By executing i = i + 3
, we can make the loop skip two iterations. The value of i
is like a remote control for the loop. In case we increment the iterator by three, what happens if we are just one item away from the end of the array we are...