We have only taken the first 25 numbers of the
(repeatedly (fn  (rand 35))) result list because the list (actually a lazy sequence) is infinite. Lazy evaluation (or laziness) is a common feature in functional programming languages, http://en.wikipedia.org/wiki/Lazy_evaluation. Being infinite, Clojure chooses to delay evaluating most of the list until it's needed by some other function that pulls out some values. Laziness benefits us by increasing performance and letting us easily construct control flow. We can avoid needless calculation, repeated evaluations, and potential error conditions in compound expressions. Let's try to pull out some values with the
take function. The
take function itself returns another lazy sequence ...