-- | Haskell implementations of hydra/lib/maps primitives

module Hydra.Lib.Maps where

import qualified Data.Map as M


empty :: M.Map k v
empty :: forall k v. Map k v
empty = Map k v
forall k v. Map k v
M.empty

fromList :: Ord k => [(k, v)] -> M.Map k v
fromList :: forall k v. Ord k => [(k, v)] -> Map k v
fromList = [(k, v)] -> Map k v
forall k v. Ord k => [(k, v)] -> Map k v
M.fromList

insert :: Ord k => k -> v -> M.Map k v -> M.Map k v
insert :: forall k v. Ord k => k -> v -> Map k v -> Map k v
insert = k -> v -> Map k v -> Map k v
forall k v. Ord k => k -> v -> Map k v -> Map k v
M.insert

isEmpty :: M.Map k v -> Bool
isEmpty :: forall k v. Map k v -> Bool
isEmpty = Map k v -> Bool
forall k v. Map k v -> Bool
M.null

keys :: M.Map k v -> [k]
keys :: forall k v. Map k v -> [k]
keys = Map k v -> [k]
forall k v. Map k v -> [k]
M.keys

lookup :: Ord k => k -> M.Map k v -> Maybe v
lookup :: forall k v. Ord k => k -> Map k v -> Maybe v
lookup = k -> Map k v -> Maybe v
forall k v. Ord k => k -> Map k v -> Maybe v
M.lookup

map :: (v1 -> v2) -> M.Map k v1 -> M.Map k v2
map :: forall v1 v2 k. (v1 -> v2) -> Map k v1 -> Map k v2
map = (v1 -> v2) -> Map k v1 -> Map k v2
forall a b. (a -> b) -> Map k a -> Map k b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap

mapKeys :: (Ord k1, Ord k2) => (k1 -> k2) -> M.Map k1 v -> M.Map k2 v
mapKeys :: forall k1 k2 v.
(Ord k1, Ord k2) =>
(k1 -> k2) -> Map k1 v -> Map k2 v
mapKeys = (k1 -> k2) -> Map k1 v -> Map k2 v
forall k2 k1 a. Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a
M.mapKeys

remove :: Ord k => k -> M.Map k v -> M.Map k v
remove :: forall k v. Ord k => k -> Map k v -> Map k v
remove = k -> Map k v -> Map k v
forall k v. Ord k => k -> Map k v -> Map k v
M.delete

singleton :: k -> v -> M.Map k v
singleton :: forall k v. k -> v -> Map k v
singleton = k -> v -> Map k v
forall k v. k -> v -> Map k v
M.singleton

size :: M.Map k v -> Int
size :: forall k v. Map k v -> Int
size = Map k v -> Int
forall k v. Map k v -> Int
M.size

toList :: M.Map k v -> [(k, v)]
toList :: forall k v. Map k v -> [(k, v)]
toList = Map k v -> [(k, v)]
forall k v. Map k v -> [(k, v)]
M.toList

values :: M.Map k v -> [v]
values :: forall k v. Map k v -> [v]
values = Map k v -> [v]
forall k v. Map k v -> [v]
M.elems