为什么这不会产生我期望的输出?
(defn test-fn []
(do
(println "start")
(map #(println (+ % 1)) '(1 2 3))
(println "done")))
输出
start
done
我希望
start
2 3 4
done
答案 0 :(得分:7)
map
是懒惰的,而do
并不强迫它。如果您想强制评估延迟序列,请使用doall
或dorun
。
(defn test-fn []
(do
(println "start")
(dorun (map #(println (+ % 1)) '(1 2 3)))
(println "done")))