我有以下代码,我希望它能够1,2,3,4
在控制台上打印,然后返回[true,true,true,true]
. 但它只是返回空并且不在控制台上打印任何内容。
逻辑是:它循环for (0..3)
,inc
每个元素加1,所以我得到了(1..4)
,然后运行(map (fn[x] (println x) true))
它从惰性序列中取1,打印1,返回true,并将take-while
结果输出到[true]
,然后取2的下一个元素,打印2、返回[true,true]等,所以结果应该打印1,2,3,4到控制台,然后返回[true,true,true,true]
。但实际上,它什么也不打印并返回[]
。这个怎么理解?
(transduce (comp (take-while true?)
(map (fn[x] (println x) true))
conj
[]
(map inc (range 4)))