Elixir 中的惰性列表理解?
Lazy list comprehension in Elixir?
有没有办法让 Elixir 中的列表推导变得惰性?如果没有,有没有办法把它变成 Stream
?
my_list = for i <- (1..1000000), j <- (1..1000000), do: {i, j}
此代码片段占用太多内存,导致我的程序崩溃。
我想在 my_list 上应用过滤器、映射和缩减。
领悟是平面图。所以你的代码相当于:
Stream.flat_map 1..1000000, fn i ->
Stream.flat_map 1..1000000, fn j ->
[{i, j}]
end
end
我已经为未来的 Elixir 版本提出了 "stream for" 和 "parallel for",但是它正在等待对该语言的一些其他改进。
有没有办法让 Elixir 中的列表推导变得惰性?如果没有,有没有办法把它变成 Stream
?
my_list = for i <- (1..1000000), j <- (1..1000000), do: {i, j}
此代码片段占用太多内存,导致我的程序崩溃。
我想在 my_list 上应用过滤器、映射和缩减。
领悟是平面图。所以你的代码相当于:
Stream.flat_map 1..1000000, fn i ->
Stream.flat_map 1..1000000, fn j ->
[{i, j}]
end
end
我已经为未来的 Elixir 版本提出了 "stream for" 和 "parallel for",但是它正在等待对该语言的一些其他改进。