pqueue2 | Hexを作った。
Erlang で書かれたpqueueに含まれてる pqueue2 モジュールを、Elixir でラップしたもの。
q = PQueue2.new |> PQueue2.put(:a, 2) |> PQueue2.put(:b, 1) |> PQueue2.put(:c, 1) {:b, q} = PQueue2.pop
Collectable と Enumerable も實裝したので次の書き方も出來る。
[:b, :c, :a, :d] == [{:a, 2}, {:b, 1}, {:c, 1}, {:d, 2}] |> Enum.into(PQueue2.new) |> Enum.to_list
Hex を檢索すると、優先度附きキューを實裝したと述べるライブラリは沢山在る。全てを試してみたが、正しく「優先度附きキュー」として動作するライブラリは、pqueue と、pqueue をラップしたものしか無い。あとは「優先度附き」ではあるが「キュー」として動作しない。pqueue を Elixir でラップしたものは數年更新が停まってゐる。pqueue は最近でも更新されてゐる。そこで pqueue を使ふ事にした。pqueue は Erlang で書かれてゐて、Elixir らしい使ひ方をするには不便だ。だから Elixr でラップした。
PropCheckで property based test を書いたりした。