Usually `map` implies that you care about the result. In fact, `doall` will retain the head of the seq, so if this is used to write a lazy seq containing gigabytes of objects, this will consume gigabytes of memory, returning a list of `nil` objects. I think what we want here is `doseq`, because we only care about the side-effects and `doseq` doesn't retain the head:

```clojure
(doseq [o objects]
  (.writeObject writer o))
```