2015-09-07 59 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問題。我是一個大粉絲。我知道你不是一個人,我的意思是最好的方式。 –