本文介绍了Elixir中的懒惰列表理解?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有办法使Elixir中的列表理解变得懒惰?如果没有,是否有办法将其转换为Stream
?
Is there a way to make list comprehension lazy in Elixir? If not, is there a way to turn this into a Stream
?
my_list = for i <- (1..1000000), j <- (1..1000000), do: {i, j}
此代码段占用了太多内存,使我的程序不堪一击.
This code snippet blows my program by taking too much memory.
我要在my_list上应用过滤器,进行映射和缩小.
I want to apply a filter, map and reduce on my_list.
推荐答案
理解是平面地图.因此,您的代码等效于:
A comprehension is a flat map. So your code is equivalent to:
Stream.flat_map 1..1000000, fn i ->
Stream.flat_map 1..1000000, fn j ->
[{i, j}]
end
end
我已经为将来的Elixir版本提出了针对"和针对"的建议,但尚待对该语言进行其他一些改进.
I have proposed a "stream for" and "parallel for" for future Elixir versions, however it is pending some other improvements to the language.
这篇关于Elixir中的懒惰列表理解?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!