エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

Queue in Elixir

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]

詳細はリファレンスを参照。