Clojure中带读行表达式的求值顺序

Clojure中带读行表达式的求值顺序,clojure,Clojure,我正在运行以下代码段: (print "Enter something:") (let [entry (read-line)] (println "You entered" entry) ) 我希望看到以下类型的交互: Enter something:abc You entered abc 相反,我看到: abc Enter something:You entered abc 为什么在代码中,即使打印是第一位的,用户输入也是第一位被请求的?我试着在谷歌上搜索,但据我所知,评估顺序应该是

我正在运行以下代码段:

(print "Enter something:")
(let [entry (read-line)]
  (println "You entered" entry)
)
我希望看到以下类型的交互:

Enter something:abc
You entered abc
相反,我看到:

abc
Enter something:You entered abc

为什么在代码中,即使打印是第一位的,用户输入也是第一位被请求的?我试着在谷歌上搜索,但据我所知,评估顺序应该是Java/Python背景下的预期顺序。这是代码的预期行为吗?

只是将我的注释粘贴到真实答案中


Java在
\n
上刷新标准输出。如果您希望输出与您在示例中编写的完全一致(读取一致,因为您无法控制),则需要强制刷新缓冲区,或者您可以使用
(println…
(print…\n”)
添加
\n


参见:

Aha——副作用。很抱歉重复了这个问题,我仍在习惯这个术语。Java在
\n
上刷新标准输出。如果您希望输出与您在示例中编写的完全一致(读取一致,因为您无法控制),则需要强制刷新缓冲区,或者您可以使用
(println…
(print…\n”)
添加
\n
。参见:麦克斯,没有必要为这样重复的问题道歉。我们不会在字典中剔除同义词。