Agda-2.5.3.20180519: A dependently typed functional programming language and proof assistant

Safe HaskellNone
LanguageHaskell2010

Agda.Utils.BiMap

Description

Finite bijections (implemented as a pair of tree maps).

Synopsis

Documentation

data BiMap a b Source #

Finite bijective map from a to b. There, and back again.

Constructors

BiMap 

Fields

Instances

(Ord a, Ord b) => Eq (BiMap a b) Source # 

Methods

(==) :: BiMap a b -> BiMap a b -> Bool #

(/=) :: BiMap a b -> BiMap a b -> Bool #

(Ord a, Ord b) => Ord (BiMap a b) Source # 

Methods

compare :: BiMap a b -> BiMap a b -> Ordering #

(<) :: BiMap a b -> BiMap a b -> Bool #

(<=) :: BiMap a b -> BiMap a b -> Bool #

(>) :: BiMap a b -> BiMap a b -> Bool #

(>=) :: BiMap a b -> BiMap a b -> Bool #

max :: BiMap a b -> BiMap a b -> BiMap a b #

min :: BiMap a b -> BiMap a b -> BiMap a b #

(Show a, Show b) => Show (BiMap a b) Source # 

Methods

showsPrec :: Int -> BiMap a b -> ShowS #

show :: BiMap a b -> String #

showList :: [BiMap a b] -> ShowS #

lookup :: Ord a => a -> BiMap a b -> Maybe b Source #

Lookup. O(log n).

invLookup :: Ord b => b -> BiMap a b -> Maybe a Source #

Inverse lookup. O(log n).

empty :: BiMap a b Source #

Empty bimap. O(1).

singleton :: a -> b -> BiMap a b Source #

Singleton bimap. O(1).

insert :: (Ord a, Ord b) => a -> b -> BiMap a b -> BiMap a b Source #

Insert. Overwrites existing value if present. O(Map.insert).

union :: (Ord a, Ord b) => BiMap a b -> BiMap a b -> BiMap a b Source #

Left-biased Union. O(Map.union).

fromList :: (Ord a, Ord b) => [(a, b)] -> BiMap a b Source #

Construct from a list of pairs.

Does not check for actual bijectivity of constructed finite map. O(n log n)

toList :: BiMap a b -> [(a, b)] Source #

Turn into list, sorted ascendingly by first value. O(Map.toList)