Haskell の両端キュー Haskell には Data.Sequence と呼ばれる両端キューライブラリが存在します。 ただのリストと比較すると 左端と右端どちらにも定数時間で要素を挿入できる1 Sequence 同士を対数時間で連結可能(>< とかいう可愛い演算子です)2 3 対数時間で要素にアクセス可能。しかもMaybeモナドに包んで返す関数もある4 などといった強みがあります。 調べてみたところ両端への挿入や端の要素の削除が、個人的にクセ強でしたのでまとめました。 要素を挿入する (<|) と (|>) 演算子を使います。定義は以下になります。 先頭への挿入 : (<|) :: a -> Seq a -> Seq a 末尾への挿入 : (|>) :: Seq a -> a -> Seq a 挿入の方向をイメージするとどうということはありませんが、よくある手続き型言語とは異なり引