2015-09-07 62 views
5

在Elixir中有没有办法让列表理解变得懒惰?如果没有,是否有办法将它变成StreamElixir懒惰列表理解?

my_list = for i <- (1..1000000), j <- (1..1000000), do: {i, j}

这段代码被占用过多的内存吹拂我的计划。

我想在my_list上应用滤镜,贴图和缩小。

回答

18

理解是一个平面图。

Stream.flat_map 1..1000000, fn i -> 
    Stream.flat_map 1..1000000, fn j -> 
    [{i, j}] 
    end 
end 

,我提出并“并行的”为未来的药剂的版本,但它正在等待其他一些改进的语言“为流”:那么你的代码是等价的。

+7

谢谢,何塞!我知道你是Elixir语言的创造者,但你至今为止回答了我所有关于Elixir的SO问题。我是一个大粉丝。我知道你不是一个人,我的意思是最好的方式。 –