union-map-0.1: Heterogeneous map by open unions.

Copyright(C) 2015, Yu Fukuzawa
LicenseBSD3
Maintainerminpou.primer@email.com
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.UnionMap

Contents

Description

An implementation of heterogeneous tree-map by open unions. This module uses the Data.Map module inside, see also https://hackage.haskell.org/package/containers.

Synopsis

Types

data UnionMap k r Source

Instances

Ord k => Monoid (UnionMap k r) 

Operators

(\\) :: Ord k => UnionMap k r -> UnionMap k r -> UnionMap k r Source

(!) :: (Ord k, Member as a) => UnionMap k as -> k -> a Source

Construction

singleton :: (Ord k, Member as a) => k -> a -> UnionMap k as Source

Query

member :: Ord k => k -> UnionMap k r -> Bool Source

notMember :: Ord k => k -> UnionMap k r -> Bool Source

lookup :: (Ord k, Member as a) => k -> UnionMap k as -> Maybe a Source

lookupU :: Ord k => k -> UnionMap k r -> Maybe (K0 :| r) Source

find :: (Ord k, Member as a) => k -> UnionMap k as -> a Source

findU :: Ord k => k -> UnionMap k r -> K0 :| r Source

findWithDefault :: (Ord k, Member as a) => a -> k -> UnionMap k as -> a Source

Insertion

insert :: (Ord k, Member as a) => k -> a -> UnionMap k as -> UnionMap k as Source

insertWith :: (Ord k, Member as a) => (a -> a -> a) -> k -> a -> UnionMap k as -> UnionMap k as Source

insertWithKey :: (Ord k, Member as a) => (k -> a -> a -> a) -> k -> a -> UnionMap k as -> UnionMap k as Source

Delete/Update

delete :: Ord k => k -> UnionMap k as -> UnionMap k as Source

adjust :: (Ord k, Member as a) => (a -> a) -> k -> UnionMap k as -> UnionMap k as Source

adjustWithKey :: (Ord k, Member as a) => (k -> a -> a) -> k -> UnionMap k as -> UnionMap k as Source

update :: (Ord k, Member as a) => (a -> Maybe a) -> k -> UnionMap k as -> UnionMap k as Source

updateWithKey :: (Ord k, Member as a) => (k -> a -> Maybe a) -> k -> UnionMap k as -> UnionMap k as Source

Set Operation

union :: Ord k => UnionMap k r -> UnionMap k r -> UnionMap k r Source

unions :: Ord k => [UnionMap k r] -> UnionMap k r Source

difference :: Ord k => UnionMap k r -> UnionMap k r -> UnionMap k r Source

intersection :: Ord k => UnionMap k r -> UnionMap k r -> UnionMap k r Source

Conversion

keys :: UnionMap k r -> [k] Source

rebuild :: Include s r => UnionMap k r -> UnionMap k s Source

Map

mapU :: ((K0 :| r) -> K0 :| s) -> UnionMap k r -> UnionMap k s Source

mapWithKeyU :: (k -> (K0 :| r) -> K0 :| s) -> UnionMap k r -> UnionMap k s Source

mapU' :: ((K0 :| r) -> a) -> UnionMap k r -> Map k a Source

mapWithKeyU' :: (k -> (K0 :| r) -> a) -> UnionMap k r -> Map k a Source

Filter

filterU :: ((K0 :| r) -> Bool) -> UnionMap k r -> UnionMap k r Source

filterWithKeyU :: (k -> (K0 :| r) -> Bool) -> UnionMap k r -> UnionMap k r Source

Folds

foldrU :: ((K0 :| r) -> b -> b) -> b -> UnionMap k r -> b Source

foldrWithKeyU :: (k -> (K0 :| r) -> b -> b) -> b -> UnionMap k r -> b Source

foldlU' :: (a -> (K0 :| r) -> a) -> a -> UnionMap k r -> a Source

foldlWithKeyU' :: (a -> k -> (K0 :| r) -> a) -> a -> UnionMap k r -> a Source

Debugging

showTree :: (Show k, Show (K0 :| r)) => UnionMap k r -> String Source