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

clojure
标签: #<Tag:0x00007f00156ec7f8>

#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的


#3

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


#4

用 lein repl运行


#5

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