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
からの値がm1
m1 <> m2
ます。この操作は、外にも利用可能であるMonoid
としてインスタンスMap.union
。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow