Clojure China

如何解释这段代码的运行结果

clojure
#1
(for [x [1 2] 
      y [7 8]]
  (do 
    (prn x y)
    (+ x y)))

在 REPL 运行后得到

(1 7
1 8
8 2 7
2 8
9 9 10)

请解释这个过程,我无法理解为什么输出会是这样

#2

你的repl流刷新不及时吧…
应该是
1 7
1 8
2 7
2 8
(8 9 9 10)
你的明显是位置错乱了.
最后一行是for语句的返回值.前几个是你prn的

1赞
#3

这样看是对的
(for [x [1 2]
y [7 8]]
(do
(+ x y)))

#4

用 lein repl运行

#5

如果你用 (println x y), 结果可能是你期待的。因为如果没有 \n,prn 不 flush stdout。