好吧,我被困在這一個了一下,其實我可以做什麼,我想用下面的代碼,這部分做的事:Clojure的遞歸和懶惰序列
(recur (conj (get-links (first links)) (rest links))))
得到鏈接返回一個輸入到初始process-links調用中的url序列,然後進行遞歸。
第一個鏈接我餵養的作品,但第二個鏈接,我試圖將一個序列連接到另一個給我以下錯誤。
"[email protected]"
現在我想知道,這是在conj'ing參考指令生成未評估序列的「休息」(其餘的鏈接)?
(defn process-links
[links]
(if (not (empty? links))
(do
(if (not (is-working (first links)))
(do
(println (str (first links) " is not working"))
(recur (rest links)))
(do
(println (str (first links) " is working"))
(recur (conj (get-links (first links)) (rest links))))))))
如果我對我的方法完全錯誤,請告訴我。
關於你的代碼的一些提示。你不應該寫(不是空的?...)),因爲它是空的嗎?是(不是(seq ...))。所以你basiclly寫作(不(不(seq ...)))。只是寫(seq ...)是常見的模式,我不認爲你必須這麼做(println(str ....)),你可以在大多數情況下執行(println ...)。而不是(如果(不...))使用(如果沒有)。最頂層的if沒有'else'部分,在這種情況下使用when函數。第一個'do'函數也可以被扔掉(特別是當使用'when'時,'when'makro總是添加一個'do',我希望這會有所幫助 – nickik 2011-12-14 23:42:43
感謝提示,有道理看它:) – Dale 2011-12-15 20:51:11