在 Elixir 中生成数字流的惯用方式是什么?

What is the idiomatic way of generating a stream of number in Elixir?

目前我有以下使用生成器的方法:

(for i <- 999..100, j <- i..100, into: [], do:  i * j)
|> Stream.filter(&(palindromic?(&1)))
|> Enum.sort
|> List.last

有没有办法生成产品流?

让我们看看我们需要做什么:

  • 999 到 100 之间的每个数字 i
  • 对于 j i 和 100
  • 之间的每个数字
  • i * j
  • 的乘积

生成这种嵌套枚举的最简单方法是生成一个嵌套的列表列表,然后将其展平,或者立即使用flat_map函数:

Stream.flat_map(999..100, fn i -> Stream.map(i..100, fn j -> j * i end) end)