Here’s a surprising (to me) consequence of the laziness in Clojure, against which I spent almost an hour banging my head today: this function will throw a StackOverflow error, because `map` returns a lazy seq and you end up with a tower of lazy seqs all the way down. Replacing `map` with `mapv` fixes it.