Doseq每y计算1 x。有没有什么方法可以让它在1年内评估1 x等等在Clojure中?

StackOverflow https://stackoverflow.com/questions/1216668

  •  06-07-2019
  •  | 
  •  

我不确定如何说出这个帖子的名称,所以如果你能澄清它,请这样做。

我的示例代码是:

(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等等。

有帮助吗?

解决方案

你可以简单地做

(doseq [[x y] (map vector [1 2 3] [3 2 1])] 
  (println (str x y)))

其他提示

(partition 2
  (interleave [1 2 3] [3 2 1]))

interleave 从给定序列中产生一系列交替元素, partition 将此序列分组为 n 元素的序列。

这更令人沮丧:

 (doall (map println [1 2 3] [3 2 1]))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top