我有两个集合
这将产生
我想要的是能够产生:
背景:我有一个文件中的行和
x
和y
,它们的项数不同。我想循环遍历x
并执行有副作用的操作,同时循环遍历y
。我不想在循环x
时重复y
。无论是doseq
还是for
都会重复y
:(for [x (range 5)
y ["A" "B"]]
[x y])
这将产生
([0 "A"] [0 "B"] [1 "A"] [1 "B"] [2 "A"] [2 "B"] [3 "A"] [3 "B"] [4 "A"] [4 "B"])
。我想要的是能够产生:
([0 "A"] [1 "B"] [2 "A"] [3 "B"] [4 "A"])
。背景:我有一个文件中的行和
core.async
通道(假设为5),我想把每一行放到我的集合中的下一个通道,类似于:(defn load-data
[file chans]
(with-open [rdr (io/reader file)]
(go
(doseq [l (line-seq rdr)
ch chans]
(>! ch l)))))
<!
等放入映射函数中,因为Go块无法跨越函数边界。 - Arthur Ulfeldtloop
/recur
代替doseq
应该是接近你所需要的。我会在今天下午提供一个例子。 - Arthur Ulfeldtline-seq
,因为这是一个巨大的文件。这个解决方案不会变得懒惰,对吧? - or9ob