c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

Elixirの優先度附きキューライブラリPQueue2を作った

pqueue2 | Hexを作った。

github.com

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 を書いたりした。