module Debug.StableMap(StableMap, empty, insert, Debug.StableMap.lookup) where import qualified Data.IntMap as M import System.Mem.StableName newtype StableMap a b = S (M.IntMap [(StableName a, b)]) empty :: StableMap a b empty = S M.empty insert :: StableName a -> b -> StableMap a b -> StableMap a b insert k v (S m) = S (M.insertWith (++) (hashStableName k) [(k, v)] m) lookup :: StableName a -> StableMap a b -> Maybe b lookup k (S m) = do xs <- M.lookup (hashStableName k) m Prelude.lookup k xs