packages feed

minesweeper-0.4: PlaceMap.hs

-- | Maps of places
module PlaceMap
    ( PlaceMap
    , fromList
    , toList
    , empty
    , lookup
    , insert
    , delete
    ) where

import Place

import qualified Data.IntMap as M
import Prelude hiding (lookup)

-------------

-- | Map of places.
type PlaceMap = M.IntMap

fromList :: [(Place, a)] -> PlaceMap a
fromList = M.fromList . map (\(p, a) -> (hashPlace p, a))

toList :: PlaceMap a -> [(Place, a)]
toList = map (\(p, a)-> (unHashPlace p, a)) . M.toList

empty :: PlaceMap a
empty = M.empty

lookup :: Place -> PlaceMap a -> Maybe a
lookup p m = M.lookup (hashPlace p) m

insert :: Place -> a -> PlaceMap a -> PlaceMap a
insert p a m = M.insert (hashPlace p) a m

delete :: Place -> PlaceMap a -> PlaceMap a
delete p m = M.delete (hashPlace p) m