OMap - 順序付きMap

Tech > Haskell > ライブラリ

insertした順序を保ったMap

パッケージ

shell > emerge dev-haskell/ordered-containers

使用方法

ghciからモジュールの読み込み

Prelude> :m +Data.Map.Ordered
Prelude Data.Map.Ordered> let m = fromList [("key1", 10), ("key2", 9), ("key3", 9)] :: OMap String Int
Prelude Data.Map.Ordered> m
fromList [("key1",10),("key2",9),("key3",9)]

最初にinsertする

Prelude Data.Map.Ordered> ("key4", 8) |< m
fromList [("key4",8),("key1",10),("key2",9),("key3",9)]

最後にappendする

Prelude Data.Map.Ordered> m |> ("key4", 7)
fromList [("key1",10),("key2",9),("key3",9),("key4",7)]

indexの位置で取得

indexは入れた順で0からn-1で指定

Prelude Data.Map.Ordered> elemAt m 0
Just ("key1",10)

指定のkeyで削除

Prelude Data.Map.Ordered> delete "key2" m
fromList [("key1",10),("key3",9)]

2つのOMapをconcatする

Prelude Data.Map.Ordered> let m' = fromList [("key5", 30), ("key6", 31)] :: OMap String Int
Prelude Data.Map.Ordered> m |<> m'
fromList [("key1",10),("key2",9),("key3",9),("key5",30),("key6",31)]

共通なOMapをかえす

keyが共通なものお左側のOMapを返してくる

Prelude Data.Map.Ordered> m |/\ (fromList [("k", 0), ("v", 222)])
fromList []
Prelude Data.Map.Ordered> m |/\ (fromList [("key1", 323), ("key2", 2222)])
fromList [("key1",10),("key2",9)]
Prelude Data.Map.Ordered> (fromList [("key1", 323), ("key2", 2222)]) |/\ m
fromList [("key1",323),("key2",2222)]

keyで値を取得

Maybe a で返してくる

Prelude Data.Map.Ordered> Data.Map.Ordered.lookup "key" m
Nothing
Prelude Data.Map.Ordered> Data.Map.Ordered.lookup "key1" m
Just 10
Prelude Data.Map.Ordered> 

OMapから配列に戻す

入れた順にリストへまとめる

Prelude Data.Map.Ordered> assocs m
[("key1",10),("key2",9),("key3",9)]

キーの昇順に戻してくる

Prelude Data.Map.Ordered> let am = fromList [("z",10),("y", 123),("x", 20)] :: OMap String Int
Prelude Data.Map.Ordered> toAscList am
[("x",20),("y",123),("z",10)]

empty判定

Prelude Data.Map.Ordered> Data.Map.Ordered.null empty
True

その他ありますが、とりあえずここまで

Posted on 2021-08-13 07:26:33

はじめまして

お茶の国静岡で、焼酎のお茶割なんか罰当たりで飲んだことはありません、常に一番搾りを嗜む静岡極東のBBQerです、最近まわりのエンジニアの方々がお料理を上手にやっている姿を恨めしそうに横目に見ながら、軟骨ピリ辛チクワを食べています、みなさんよろしく。

Posted

Amazon

tags

日本酒池 広井酒店 やがら やっぱた 刺身 丸干し 東京マラソン fpm php82 servant thread spawn Rust Oracle Linux 8 microcode firmware linux openzfs zfs gitea 麒麟 真野鶴 金鶴 日本酒 docker oracle pod podman cli virtualbox VirtualBox epub mobi calibre mask lens ワンライナー php redmine Linux Oracle Map OMap omap map BBQ カテゴリ管理 カテゴリ timestamp date oracle database string 麦焼酎 ダービー process 磨き蒸留 広井酒店、日本酒 芋焼酎 焼酎 ゆるキャン 広井酒店、日本酒池 spring framework java persistent spring session session spring hdbc-odbc persistent-odbc odbc day utctime スィート レマンの森 elm初期化 elm バイク xlr80 esqueleto database xl2tpd strongswan vpn l2tp ipsec 正月 ゲーム grub nginx systemctl portage 豚骨 圧力鍋 yesod-auth-hashdb yesod-auth yesod