{- |
For use in Tree and Graph modules.
-}
module Haskore.General.TagDictionary (T, empty, insert, lookup, singleton) where

import Haskore.General.Map (Map, empty, singleton)
import qualified Haskore.General.Map as Map

import Prelude hiding (lookup)


type T tag tree = Map tag tree

insert :: Ord tag => tag -> tree -> Map tag tree -> Map tag tree
insert =
   Map.insertWith
      (error "TagDictionary.insert: multiple definition of tag")

lookup :: (Ord tag) => Map tag tree -> tag -> tree
lookup dict =
   Map.findWithDefault dict (error "unknown loop tag")