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

时间:2016-02-21 20:28:18

标签: streaming generator elixir

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

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

有没有办法生成产品流?

1 个答案:

答案 0 :(得分:5)

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

  • 每个号码 i 介于999和100之间
  • i 和100
  • 之间的每个数字 j
  • i * j
  • 的产品

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

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