module Data.BTree.Utils.Map where

import Data.List (inits)
import Data.Map (Map)
import qualified Data.Map as M

mapSplitAt :: Eq k => Int -> Map k v -> (Map k v, Map k v)
mapSplitAt i m
    | (l,r) <- splitAt i (M.toList m)
    = (M.fromAscList l, M.fromAscList r)

mapInits :: Ord k => Map k v -> [Map k v]
mapInits = map M.fromList . inits . M.toList