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

Safe HaskellNone
LanguageHaskell98

Agda.Utils.BiMap

Contents

Description

Finite bijections (implemented as a pair of 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 #

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

Methods

arbitrary :: Gen (BiMap a b) #

shrink :: BiMap a b -> [BiMap a b] #

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.

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.

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

Turn into list, sorted ascendingly by first value.

Instances

Properties

All tests