List.concat/1に似た関数を書くと、リストの列挙が可能で、連結リストは連続ストリームとして出力されます。リストの列挙可能を束縛する
それはこのように動作します:
iex> 1..3 |> Stream.map(&([&1])) |> Enum.to_list
[[1], [2], [3]]
iex> 1..3 |> Stream.map(&([&1])) |> MyStream.concat |> Enum.to_list
[1, 2, 3]
を私はこれまでのところが出ていることはこれです:
defmodule MyStream do
def concat(lists) do
Enumerable.reduce(lists, [], fn(x, acc) -> acC++ x end)
end
end
これは正しい結果を生成するが、明らかに怠け者ではありません。
Stream.Lazy
を使用してみましたが、実際にはその内部の仕組みを理解できていません。 Stream.Lazy
の説明は非常に高く評価されます!