Haskell Language
コンテナ - データ。地図
サーチ…
構築
次のようなタプルのリストからMapを作成することができます:
Map.fromList [("Alex", 31), ("Bob", 22)]
マップは単一の値で構築することもできます:
> Map.singleton "Alex" 31
fromList [("Alex",31)]
empty関数もあります。
empty :: Map k a
Data.Mapは、 union 、 difference 、 intersectionなどの一般的な集合操作もサポートしています。
空の場合のチェック
null関数を使用して、指定されたMapが空であるかどうかを確認します。
> Map.null $ Map.fromList [("Alex", 31), ("Bob", 22)]
False
> Map.null $ Map.empty
True
価値の発見
マップには多くのクエリ操作があります。
member :: Ord k => k -> Map ka -> Boolは、 k型のキーがMap ka場合にTrue member :: Ord k => k -> Map ka -> Boolます。
> Map.member "Alex" $ Map.singleton "Alex" 31 True > Map.member "Jenny" $ Map.empty False
notMemberも同様です:
> Map.notMember "Alex" $ Map.singleton "Alex" 31 False > Map.notMember "Jenny" $ Map.empty True
キーが存在しない場合、 findWithDefault :: Ord k => a -> k -> Map ka -> aを使用してデフォルト値を得ることもできます:
Map.findWithDefault 'x' 1 (fromList [(5,'a'), (3,'b')]) == 'x' Map.findWithDefault 'x' 5 (fromList [(5,'a'), (3,'b')]) == 'a'
要素を挿入する
要素を挿入するのは簡単です:
> let m = Map.singleton "Alex" 31
fromList [("Alex",31)]
> Map.insert "Bob" 99 m
fromList [("Alex",31),("Bob",99)]
要素の削除
> let m = Map.fromList [("Alex", 31), ("Bob", 99)]
fromList [("Alex",31),("Bob",99)]
> Map.delete "Bob" m
fromList [("Alex",31)]
モジュールのインポート
containersパッケージのData.Mapモジュールは、厳密実装と遅延実装の両方を持つMap構造体を提供します。
Data.Mapを使用するData.Map 、通常Preludeで定義されている関数との衝突を避けるために、 Data.Mapインポートします。
import qualified Data.Map as Map
そこでMap関数呼び出しの前にMapを追加しMap. 、例えば
Map.empty -- give me an empty Map
モノイドインスタンス
Map kvは以下のセマンティクスを持つMonoidインスタンスを提供します:
-
memptyは空のMap。つまり、Map.emptyと同じMap.empty -
m1 <> m2はm1とm2の左偏った和集合です。つまり、いずれかのキーがm1とm2両方に存在する場合、m1からの値がm1m1 <> m2ます。この操作は、外にも利用可能であるMonoidとしてインスタンスMap.union。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow