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",但是它正在等待对该语言的一些其他改进。