我不确定如何说出这个帖子的名称,所以如果你能澄清它,请这样做。
我的示例代码是:
(doseq [x [1 2 3] y [3 2 1]] (println (str x y)))
该代码的输出是:
13
12
11
23
22
21
33
32
31
nil
我理解列表理解,而doseq都是这样评价的。有没有另一种方法可以做到这一点,所以不是x的1个元素用于y的每个元素,依此类推,x的1个元素与y的1个元素一起使用,依此类推,因此输出将是:
13
22
31
对不起,如果我没有说明这一点,我似乎无法用正确的方式说出来。
编辑:我认为您可以在Haskell中使用列表推导和语言扩展来完成此操作。 ParallelListComps等等。答案 0 :(得分:11)
你可以简单地做
(doseq [[x y] (map vector [1 2 3] [3 2 1])]
(println (str x y)))
答案 1 :(得分:4)
(partition 2
(interleave [1 2 3] [3 2 1]))
interleave
从给定序列中产生一系列交替元素,partition
将此序列分组为n
个元素的序列。
答案 2 :(得分:1)
这更简洁:
(doall (map println [1 2 3] [3 2 1]))