懶惰的字符串錯誤,我打算檢索一個大的網頁,並嘗試這種在Clojure的Web檢索到的Clojure
(defn fetch-url [url]
"Retrieves the web page specified by the url."
(with-open [the-stream (.openStream (java.net.URL. url))]
(let [reader (new BufferedReader (new InputStreamReader the-stream))]
(repeatedly (str (.read reader))))))
它給了我下面的錯誤,當我試圖讓first
或在任何序列操作結果功能:
java.lang.RuntimeException: java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn (repl-1:2)
此外,使用行seq不工作,因爲(我認爲)該頁面持續太多加載。
我想創建一個懶惰的字符串,因爲簡單地創建一個字符串會給我一個堆空間錯誤。我怎樣才能做到這一點?
更多信息:代碼的最後一行是不起作用的,因爲1)它在'with-open'之外執行'read',這意味着流已經關閉,2)'repeated'接受一個函數,而不是值。 –