我正在解决这些4clojure.com
问题(这是来自问题 33),我一生都无法弄清楚这是如何工作的:
(#(for [x %, i (range %2)] x) [1 2 3] 2) ; --> '(1 1 2 2 3 3)
我可以看到for
绑定x
到[1 2 3]
然后做了两次(i
绑定到'(0 1)
),但我希望得到一个像'([1 2 3] [1 2 3])
. 看起来这段代码以某种方式mapcat
对输出进行了操作。
的文档字符串for
包括以下内容:Collections are iterated in a nested fashion, rightmost fastest...
. 这给了我i
对 的值0, 1, 2
的直觉x
,但我不能说我理解发生了什么。
有人能以一种可以改善我对工作原理的心理模型的方式来解释正在发生的事情for
吗?非常感谢!