为什么这不会产生我期望的输出?
(defn test-fn []
(do
(println "start")
(map #(println (+ % 1)) '(1 2 3))
(println "done")))
Run Code Online (Sandbox Code Playgroud)
它输出
start
done
Run Code Online (Sandbox Code Playgroud)
而我期待
start
2 3 4
done
Run Code Online (Sandbox Code Playgroud)
map是懒惰的,do不会强迫它.如果要强制评估惰性序列,请使用doall或dorun.
(defn test-fn []
(do
(println "start")
(dorun (map #(println (+ % 1)) '(1 2 3)))
(println "done")))
Run Code Online (Sandbox Code Playgroud)