bimaps-0.1.0.2: bijections with multiple implementations.
Safe HaskellNone
LanguageHaskell2010

Data.Bijection.Class

Synopsis

Documentation

data Bimap l r Source #

Bijection between finite sets.

Both data types are strict here.

Constructors

Bimap !l !r 

Instances

Instances details
(DomCodCnt l r, FromJSON (Dom l), FromJSON (Dom r)) => FromJSON (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

(DomCodCnt l r, ToJSON (Dom l), ToJSON (Dom r)) => ToJSON (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

Methods

toJSON :: Bimap l r -> Value #

toEncoding :: Bimap l r -> Encoding #

toJSONList :: [Bimap l r] -> Value #

toEncodingList :: [Bimap l r] -> Encoding #

omitField :: Bimap l r -> Bool #

Generic (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

Associated Types

type Rep (Bimap l r) 
Instance details

Defined in Data.Bijection.Class

type Rep (Bimap l r) = D1 ('MetaData "Bimap" "Data.Bijection.Class" "bimaps-0.1.0.2-BM5A5jFb2S0MrZzNduxBG" 'False) (C1 ('MetaCons "Bimap" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 l) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)))

Methods

from :: Bimap l r -> Rep (Bimap l r) x #

to :: Rep (Bimap l r) x -> Bimap l r #

(Read l, Read r) => Read (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

(Show l, Show r) => Show (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

Methods

showsPrec :: Int -> Bimap l r -> ShowS #

show :: Bimap l r -> String #

showList :: [Bimap l r] -> ShowS #

(Binary l, Binary r) => Binary (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

Methods

put :: Bimap l r -> Put #

get :: Get (Bimap l r) #

putList :: [Bimap l r] -> Put #

(Serialize l, Serialize r) => Serialize (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

Methods

put :: Putter (Bimap l r) #

get :: Get (Bimap l r) #

(NFData l, NFData r) => NFData (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

Methods

rnf :: Bimap l r -> () #

(Eq l, Eq r) => Eq (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

Methods

(==) :: Bimap l r -> Bimap l r -> Bool #

(/=) :: Bimap l r -> Bimap l r -> Bool #

type Rep (Bimap l r) Source # 
Instance details

Defined in Data.Bijection.Class

type Rep (Bimap l r) = D1 ('MetaData "Bimap" "Data.Bijection.Class" "bimaps-0.1.0.2-BM5A5jFb2S0MrZzNduxBG" 'False) (C1 ('MetaCons "Bimap" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 l) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)))

class DomCod z where Source #

Associated Types

type Dom z Source #

type Cod z Source #

Methods

member :: z -> Dom z -> Bool Source #

lookup :: z -> Dom z -> Maybe (Cod z) Source #

deleteDC :: z -> Dom z -> Maybe (Cod z, z) Source #

insertDC :: z -> (Dom z, Cod z) -> z Source #

toListDC :: z -> [(Dom z, Cod z)] Source #

nullDC :: z -> Bool Source #

emptyDC :: z Source #

sizeDC :: z -> Int Source #

fromListDC :: [(Dom z, Cod z)] -> z Source #

Instances

Instances details
DomCod (Vector c) Source # 
Instance details

Defined in Data.Bijection.Vector

Associated Types

type Dom (Vector c) 
Instance details

Defined in Data.Bijection.Vector

type Dom (Vector c) = Int
type Cod (Vector c) 
Instance details

Defined in Data.Bijection.Vector

type Cod (Vector c) = c

Methods

member :: Vector c -> Dom (Vector c) -> Bool Source #

lookup :: Vector c -> Dom (Vector c) -> Maybe (Cod (Vector c)) Source #

deleteDC :: Vector c -> Dom (Vector c) -> Maybe (Cod (Vector c), Vector c) Source #

insertDC :: Vector c -> (Dom (Vector c), Cod (Vector c)) -> Vector c Source #

toListDC :: Vector c -> [(Dom (Vector c), Cod (Vector c))] Source #

nullDC :: Vector c -> Bool Source #

emptyDC :: Vector c Source #

sizeDC :: Vector c -> Int Source #

fromListDC :: [(Dom (Vector c), Cod (Vector c))] -> Vector c Source #

Storable c => DomCod (Vector c) Source # 
Instance details

Defined in Data.Bijection.Vector.Storable

Associated Types

type Dom (Vector c) 
Instance details

Defined in Data.Bijection.Vector.Storable

type Dom (Vector c) = Int
type Cod (Vector c) 
Instance details

Defined in Data.Bijection.Vector.Storable

type Cod (Vector c) = c

Methods

member :: Vector c -> Dom (Vector c) -> Bool Source #

lookup :: Vector c -> Dom (Vector c) -> Maybe (Cod (Vector c)) Source #

deleteDC :: Vector c -> Dom (Vector c) -> Maybe (Cod (Vector c), Vector c) Source #

insertDC :: Vector c -> (Dom (Vector c), Cod (Vector c)) -> Vector c Source #

toListDC :: Vector c -> [(Dom (Vector c), Cod (Vector c))] Source #

nullDC :: Vector c -> Bool Source #

emptyDC :: Vector c Source #

sizeDC :: Vector c -> Int Source #

fromListDC :: [(Dom (Vector c), Cod (Vector c))] -> Vector c Source #

Unbox c => DomCod (Vector c) Source # 
Instance details

Defined in Data.Bijection.Vector.Unboxed

Associated Types

type Dom (Vector c) 
Instance details

Defined in Data.Bijection.Vector.Unboxed

type Dom (Vector c) = Int
type Cod (Vector c) 
Instance details

Defined in Data.Bijection.Vector.Unboxed

type Cod (Vector c) = c

Methods

member :: Vector c -> Dom (Vector c) -> Bool Source #

lookup :: Vector c -> Dom (Vector c) -> Maybe (Cod (Vector c)) Source #

deleteDC :: Vector c -> Dom (Vector c) -> Maybe (Cod (Vector c), Vector c) Source #

insertDC :: Vector c -> (Dom (Vector c), Cod (Vector c)) -> Vector c Source #

toListDC :: Vector c -> [(Dom (Vector c), Cod (Vector c))] Source #

nullDC :: Vector c -> Bool Source #

emptyDC :: Vector c Source #

sizeDC :: Vector c -> Int Source #

fromListDC :: [(Dom (Vector c), Cod (Vector c))] -> Vector c Source #

(Eq d, Ord d) => DomCod (Map d c) Source # 
Instance details

Defined in Data.Bijection.Map

Associated Types

type Dom (Map d c) 
Instance details

Defined in Data.Bijection.Map

type Dom (Map d c) = d
type Cod (Map d c) 
Instance details

Defined in Data.Bijection.Map

type Cod (Map d c) = c

Methods

member :: Map d c -> Dom (Map d c) -> Bool Source #

lookup :: Map d c -> Dom (Map d c) -> Maybe (Cod (Map d c)) Source #

deleteDC :: Map d c -> Dom (Map d c) -> Maybe (Cod (Map d c), Map d c) Source #

insertDC :: Map d c -> (Dom (Map d c), Cod (Map d c)) -> Map d c Source #

toListDC :: Map d c -> [(Dom (Map d c), Cod (Map d c))] Source #

nullDC :: Map d c -> Bool Source #

emptyDC :: Map d c Source #

sizeDC :: Map d c -> Int Source #

fromListDC :: [(Dom (Map d c), Cod (Map d c))] -> Map d c Source #

(Eq d, Hashable d) => DomCod (HashMap d c) Source # 
Instance details

Defined in Data.Bijection.HashMap

Associated Types

type Dom (HashMap d c) 
Instance details

Defined in Data.Bijection.HashMap

type Dom (HashMap d c) = d
type Cod (HashMap d c) 
Instance details

Defined in Data.Bijection.HashMap

type Cod (HashMap d c) = c

Methods

member :: HashMap d c -> Dom (HashMap d c) -> Bool Source #

lookup :: HashMap d c -> Dom (HashMap d c) -> Maybe (Cod (HashMap d c)) Source #

deleteDC :: HashMap d c -> Dom (HashMap d c) -> Maybe (Cod (HashMap d c), HashMap d c) Source #

insertDC :: HashMap d c -> (Dom (HashMap d c), Cod (HashMap d c)) -> HashMap d c Source #

toListDC :: HashMap d c -> [(Dom (HashMap d c), Cod (HashMap d c))] Source #

nullDC :: HashMap d c -> Bool Source #

emptyDC :: HashMap d c Source #

sizeDC :: HashMap d c -> Int Source #

fromListDC :: [(Dom (HashMap d c), Cod (HashMap d c))] -> HashMap d c Source #

type DomCodCnt l r = (DomCod l, DomCod r, Dom l ~ Cod r, Dom r ~ Cod l) Source #

contL :: Bimap l r -> l Source #

contR :: Bimap l r -> r Source #

memberL :: DomCod l => Bimap l r -> Dom l -> Bool Source #

memberR :: DomCod r => Bimap l r -> Dom r -> Bool Source #

lookupL :: DomCod l => Bimap l r -> Dom l -> Maybe (Cod l) Source #

lookupR :: DomCod r => Bimap l r -> Dom r -> Maybe (Cod r) Source #

empty :: DomCodCnt l r => Bimap l r Source #

null :: DomCod l => Bimap l r -> Bool Source #

size :: DomCod l => Bimap l r -> Int Source #

fromList :: DomCodCnt l r => [(Dom l, Dom r)] -> Bimap l r Source #

Given a list of pairs [(x,y)], turn it into a bimap (x->y, y->x).

toList :: DomCodCnt l r => Bimap l r -> [(Dom l, Dom r)] Source #

insert :: DomCodCnt l r => Bimap l r -> (Dom l, Cod l) -> Bimap l r Source #

deleteByL :: DomCodCnt l r => Bimap l r -> Dom l -> Bimap l r Source #

deleteByR :: DomCodCnt l r => Bimap l r -> Dom r -> Bimap l r Source #

findWithDefaultL :: DomCodCnt l r => Cod l -> Bimap l r -> Dom l -> Cod l Source #

findWithDefaultR :: DomCodCnt l r => Cod r -> Bimap l r -> Dom r -> Cod r Source #