Clojure,懒惰的评估问题

Clojure,懒惰的评估问题,clojure,Clojure,考虑clojure中的以下代码: (让[a(find-a),b(find-b)] (印刷体a) (印刷体b) ) 其中b是序列。函数find-a中还有一些println语句。 我希望在标准输出中看到的是: A. find-a中println语句的结果, B 然而,我得到的是: A. b部分, find-a中println语句的结果, b的其余部分 这是由于对序列的延迟求值造成的吗?此代码中的任何内容都不是天生的延迟-应该按照正确的顺序执行 但是,根据a和b是什么,它们内部可能嵌入了惰性的东西,只

考虑clojure中的以下代码:

(让[a(find-a),b(find-b)] (印刷体a) (印刷体b) )

其中b是序列。函数find-a中还有一些println语句。 我希望在标准输出中看到的是: A. find-a中println语句的结果, B 然而,我得到的是: A. b部分, find-a中println语句的结果, b的其余部分


这是由于对序列的延迟求值造成的吗?

此代码中的任何内容都不是天生的延迟-应该按照正确的顺序执行

但是,根据
a
b
是什么,它们内部可能嵌入了惰性的东西,只有在执行
(println a)
(println b)
时才会执行。特别是,如果
a
b
是用或类似的东西创建的惰性序列,则只有在语句中强制执行时,才会对序列的后面部分求值。更具体地说,您需要描述
a
b
的内部结构


然而,我实际上怀疑问题可能是由于缓冲区没有被刷新-请参阅println应该自动刷新。如果使用打印,通常只需担心手动刷新。