我正在写我的第一个Clojure计划.
我正在使用clojure.data.csv来处理csv文件.我的文件可能很大,所以我确实想利用懒惰.我的MWE代码演示了我的问题如下所示.
当我执行load-data函数时,我得到"IOException Stream closed",所以我很清楚懒惰流在消费点之前被关闭了.
我查看了data.csv(https://github.com/clojure/data.csv)的文档,可以看到一种方法可以阻止流在关闭之前被关闭以将流开放移动到callstack流被消耗.据我了解,这是我在下面所做的,因为(采取5)是在开放的范围内.显然,我有一个概念上的差距.非常感谢任何帮助!
(ns data-load.core
(:gen-class)
(:require [clojure.data.csv :as csv]
[clojure.java.io :as io]))
(defn load-data [from to]
(with-open [reader (io/reader from)
writer (io/writer to)]
(->> (csv/read-csv reader)
(take 5))))
Run Code Online (Sandbox Code Playgroud) clojure ×1