Ответ 1
(defn float-seqs [#^java.io.DataInputStream dis]
(lazy-seq
(try
(cons (.readFloat dis) (float-seqs dis))
(catch java.io.EOFException e
(.close dis)))))
(with-open [dis (-> file java.io.FileInputStream. java.io.DataInputStream.)]
(let [s (float-seqs dis)]
(doseq [f s]
(println f))))
Вы не обязаны использовать open-open, если вы уверены, что собираетесь потреблять весь seq.
Если вы используете open-open, дважды проверьте, что вы не просачиваете seq (или производный seq) за пределы своей области.