module DDF.Bimap (module DDF.Bimap, module DDF.Prod, module DDF.Option) where
import qualified DDF.Map as Map
import DDF.Prod
import DDF.Option
import DDF.Int
import qualified Data.Bimap as M
import qualified Prelude as M
import qualified Data.Map as M
class (Int r, Map.Map r) => Bimap r where
size :: r h (M.Bimap a b -> M.Int)
lookupL :: (Map.Ord a, Map.Ord b) => r h (M.Bimap a b -> a -> Maybe b)
lookupR :: (Map.Ord a, Map.Ord b) => r h (M.Bimap a b -> b -> Maybe a)
empty :: r h (M.Bimap a b)
singleton :: r h ((a, b) -> M.Bimap a b)
toMapL :: r h (M.Bimap a b -> M.Map a b)
toMapR :: r h (M.Bimap a b -> M.Map b a)
insert :: (Map.Ord a, Map.Ord b) => r h ((a, b) -> M.Bimap a b -> M.Bimap a b)
updateL :: (Map.Ord a, Map.Ord b) => r h ((b -> Maybe b) -> a -> M.Bimap a b -> M.Bimap a b)
updateR :: (Map.Ord a, Map.Ord b) => r h ((a -> Maybe a) -> b -> M.Bimap a b -> M.Bimap a b)
lookupL2 = app2 lookupL
size1 = app size
insert2 = app2 insert