Q Elixir でキューを利用したいときは?
A Erlang に queue モジュールが用意されているので、それが使えます。
1..10 |> Enum.reduce( :queue.new(), # 初期値として空のキューを用意 fn i, q -> :queue.in(i, q) end) # キューに値を追加する |> Stream.unfold(fn q -> case :queue.out(q) do # キューから値を取り出す {{:value, i}, next_q} -> {i, next_q} # キューに値があった場合 {:empty, _} -> nil # キューが空だった場合 end end) |> Enum.to_list() # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
詳細はリファレンスを参照。