-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Composable maps and generic tries.
--
-- Provides typeclass for and several implementations of composable maps
-- and generic tries. OrdMap is roughly equivalent to Data.Map . ListMap,
-- EitherMap, MaybeMap, TupleMap and EnumMap allow you to break down the
-- corresponding types. InjectKeys is the easiest way to define tries on
-- your own types, see EitherMap for a simple example. ChoiceMap and
-- TupleMap correspond to sum and product types, respectively. The
-- type-level syntax for creating maps is currently unwieldy. This will
-- improve significantly in the next version.
@package gmap
@version 0.1
module Data.GMap
-- | Type of composable maps. For an example of a composed map see
-- Data.GMap.ListMap
class (Eq k) => Map map k | map -> k
empty :: (Map map k) => map a
singleton :: (Map map k) => k -> a -> map a
pair :: (Map map k) => k -> k -> Maybe (a -> a -> map a)
fromAssocsWith :: (Map map k) => (a -> a -> a) -> [(k, a)] -> map a
fromAssocsMaybe :: (Map map k) => (a -> a -> Maybe a) -> [(k, a)] -> map a
status :: (Map map k) => map a -> Status k a
nonEmpty :: (Map map k) => map a -> Maybe (map a)
addSize :: (Map map k) => map a -> Int# -> Int#
lookup :: (Map map k) => k -> map a -> Maybe a
lookupCont :: (Map map k) => (a -> Maybe b) -> k -> map a -> Maybe b
alter :: (Map map k) => (Maybe a -> Maybe a) -> k -> map a -> map a
insertWith :: (Map map k) => (a -> a) -> k -> a -> map a -> map a
insertWith' :: (Map map k) => (a -> a) -> k -> a -> map a -> map a
insertMaybe :: (Map map k) => (a -> Maybe a) -> k -> a -> map a -> map a
delete :: (Map map k) => k -> map a -> map a
adjustWith :: (Map map k) => (a -> a) -> k -> map a -> map a
adjustWith' :: (Map map k) => (a -> a) -> k -> map a -> map a
adjustMaybe :: (Map map k) => (a -> Maybe a) -> k -> map a -> map a
venn :: (Map map k) => (a -> b -> c) -> map a -> map b -> (map a, map c, map b)
venn' :: (Map map k) => (a -> b -> c) -> map a -> map b -> (map a, map c, map b)
vennMaybe :: (Map map k) => (a -> b -> Maybe c) -> map a -> map b -> (map a, map c, map b)
union :: (Map map k) => (a -> a -> a) -> map a -> map a -> map a
union' :: (Map map k) => (a -> a -> a) -> map a -> map a -> map a
unionMaybe :: (Map map k) => (a -> a -> Maybe a) -> map a -> map a -> map a
disjointUnion :: (Map map k) => map a -> map a -> map a
intersection :: (Map map k) => (a -> b -> c) -> map a -> map b -> map c
intersection' :: (Map map k) => (a -> b -> c) -> map a -> map b -> map c
intersectionMaybe :: (Map map k) => (a -> b -> Maybe c) -> map a -> map b -> map c
difference :: (Map map k) => map a -> map b -> map a
differenceMaybe :: (Map map k) => (a -> b -> Maybe a) -> map a -> map b -> map a
isSubsetOf :: (Map map k) => map a -> map b -> Bool
isSubmapOf :: (Map map k) => (a -> b -> Bool) -> map a -> map b -> Bool
map :: (Map map k) => (a -> b) -> map a -> map b
map' :: (Map map k) => (a -> b) -> map a -> map b
mapMaybe :: (Map map k) => (a -> Maybe b) -> map a -> map b
mapWithKey :: (Map map k) => (k -> a -> b) -> map a -> map b
mapWithKey' :: (Map map k) => (k -> a -> b) -> map a -> map b
filter :: (Map map k) => (a -> Bool) -> map a -> map a
foldElems :: (Map map k) => (a -> b -> b) -> b -> map a -> b
foldKeys :: (Map map k) => (k -> b -> b) -> b -> map a -> b
foldAssocs :: (Map map k) => (k -> a -> b -> b) -> b -> map a -> b
foldElems' :: (Map map k) => (a -> b -> b) -> b -> map a -> b
foldKeys' :: (Map map k) => (k -> b -> b) -> b -> map a -> b
foldAssocs' :: (Map map k) => (k -> a -> b -> b) -> b -> map a -> b
foldElemsUInt :: (Map map k) => (a -> Int# -> Int#) -> Int# -> map a -> Int#
valid :: (Map map k) => map a -> Maybe String
disjointUnionError :: a
-- | Raised by disjointUnion if the arguments are not disjoint. Note that
-- instances of Map are *not* required to test that arguments are
-- disjoint.
--
-- This is the return type for the status method of the Map
-- class
data Status k a
None :: Status k a
One :: k -> a -> Status k a
Many :: Status k a
-- | Same as vennMaybe except that the new associated values are
-- strictly evaluated.
vennMaybe' :: (Map map k) => (a -> b -> Maybe c) -> map a -> map b -> (map a, map c, map b)
-- | Like alter except that the new associated value is strictly
-- evaluated
alter' :: (Map map k) => (Maybe a -> Maybe a) -> k -> map a -> map a
-- | Like adjustMaybe except that the new associated value is
-- strictly evaluated
adjustMaybe' :: (Map map k) => (a -> Maybe a) -> k -> map a -> map a
-- | Like insertMaybe except that if the key is already present the
-- new associated value is evaluated strictly. If the key is not present
-- then the supplied value is *not* evaluated strictly. (TODO Change
-- this)
insertMaybe' :: (Map map k) => (a -> Maybe a) -> k -> a -> map a -> map a
-- | Like unionMaybe except that the new associated values are
-- strictly evaluated
unionMaybe' :: (Map map k) => (a -> a -> Maybe a) -> map a -> map a -> map a
-- | Like intersectionMaybe except that the new associated values
-- are strictly evaluated
intersectionMaybe' :: (Map map k) => (a -> b -> Maybe c) -> map a -> map b -> map c
-- | Like differenceMaybe except that the new associated values are
-- strictly evaluated
differenceMaybe' :: (Map map k) => (a -> b -> Maybe a) -> map a -> map b -> map a
-- | Like mapMaybe except that the new associated values are
-- strictly evaluated
mapMaybe' :: (Map map k) => (a -> Maybe b) -> map a -> map b
isEmpty :: (Map map l) => map a -> Bool
isSingleton :: (Map map l) => map a -> Bool
-- | Write a new association in the map, overwriting any value currently
-- associated with the key.
insert :: (Map map k) => k -> a -> map a -> map a
-- | Write a new association in the map, overwriting any value currently
-- associated with the key. The new value is evaluated strictly.
insert' :: (Map map k) => k -> a -> map a -> map a
-- | Count the number of associations in a map.
size :: (Map map k) => map a -> Int
-- | Insert an unordered list of key/value pairs into a map. Repeated keys
-- will be overwritten by the last occurence of the key.
insertAssocs :: (Map map k) => [(k, a)] -> map a -> map a
insertAssocsWith :: (Map map k) => (a -> a -> a) -> [(k, a)] -> map a -> map a
insertAssocsMaybe :: (Map map k) => (a -> a -> Maybe a) -> [(k, a)] -> map a -> map a
fromAssocs :: (Map map k) => [(k, a)] -> map a
-- | Monadic lookup.
lookupM :: (Map map k, Monad m) => k -> map a -> m a
keys :: (Map map k) => map a -> [k]
elems :: (Map map k) => map a -> [a]
assocs :: (Map map k) => map a -> [(k, a)]
-- | Maps which maintain some order on their keys, determined by
-- compareKey.
class (Map map k) => OrderedMap map k
compareKey :: (OrderedMap map k) => map a -> k -> k -> Ordering
fromAssocsAscWith :: (OrderedMap map k) => (a -> a -> a) -> [(k, a)] -> map a
fromAssocsAscMaybe :: (OrderedMap map k) => (a -> a -> Maybe a) -> [(k, a)] -> map a
fromAssocsDescWith :: (OrderedMap map k) => (a -> a -> a) -> [(k, a)] -> map a
fromAssocsDescMaybe :: (OrderedMap map k) => (a -> a -> Maybe a) -> [(k, a)] -> map a
foldElemsAsc :: (OrderedMap map k) => (a -> b -> b) -> b -> map a -> b
foldElemsDesc :: (OrderedMap map k) => (a -> b -> b) -> b -> map a -> b
foldKeysAsc :: (OrderedMap map k) => (k -> b -> b) -> b -> map a -> b
foldKeysDesc :: (OrderedMap map k) => (k -> b -> b) -> b -> map a -> b
foldAssocsAsc :: (OrderedMap map k) => (k -> a -> b -> b) -> b -> map a -> b
foldAssocsDesc :: (OrderedMap map k) => (k -> a -> b -> b) -> b -> map a -> b
foldElemsAsc' :: (OrderedMap map k) => (a -> b -> b) -> b -> map a -> b
foldElemsDesc' :: (OrderedMap map k) => (a -> b -> b) -> b -> map a -> b
foldKeysAsc' :: (OrderedMap map k) => (k -> b -> b) -> b -> map a -> b
foldKeysDesc' :: (OrderedMap map k) => (k -> b -> b) -> b -> map a -> b
foldAssocsAsc' :: (OrderedMap map k) => (k -> a -> b -> b) -> b -> map a -> b
foldAssocsDesc' :: (OrderedMap map k) => (k -> a -> b -> b) -> b -> map a -> b
fromAssocsAsc :: (OrderedMap map k) => [(k, a)] -> map a
fromAssocsDesc :: (OrderedMap map k) => [(k, a)] -> map a
-- | Insert an ascending list of associations into a map Duplicate keys are
-- replaced by the rightmost value
insertAssocsAsc :: (OrderedMap map k) => [(k, a)] -> map a -> map a
-- | Insert a descending list of associations into a map Duplicate keys are
-- replaced by the rightmost value
insertAssocsDesc :: (OrderedMap map k) => [(k, a)] -> map a -> map a
-- | Insert an ascending list of associations into a map Duplicate keys are
-- combined with the supplied function
insertAssocsAscWith :: (OrderedMap map k) => (a -> a -> a) -> [(k, a)] -> map a -> map a
-- | Insert a descending list of associations into a map Duplicate keys are
-- combined with the supplied function
insertAssocsDescWith :: (OrderedMap map k) => (a -> a -> a) -> [(k, a)] -> map a -> map a
-- | Same as insertAssocsAscWith except that if Nothing is returned
-- then the key is discarded
insertAssocsAscMaybe :: (OrderedMap map k) => (a -> a -> Maybe a) -> [(k, a)] -> map a -> map a
-- | Same as insertAssocsDescWith except that if Nothing is returned
-- then the key is discarded
insertAssocsDescMaybe :: (OrderedMap map k) => (a -> a -> Maybe a) -> [(k, a)] -> map a -> map a
-- | List the elements in the map in ascending order of keys.
elemsAsc :: (OrderedMap map k) => map a -> [a]
-- | List the elements in the map in descending order of keys.
elemsDesc :: (OrderedMap map k) => map a -> [a]
-- | List all associations in the map in ascending order of keys.
assocsAsc :: (OrderedMap map k) => map a -> [(k, a)]
-- | List all associations in the map in descending order of keys.
assocsDesc :: (OrderedMap map k) => map a -> [(k, a)]
-- | List all keys in the map in ascending order.
keysAsc :: (OrderedMap map k) => map a -> [k]
-- | List all keys in the map in descending order.
keysDesc :: (OrderedMap map k) => map a -> [k]
-- | Similar to isSubsetOf, but also requires that the size of the
-- second map is greater than the first (so does not include the case
-- where the key sets are identical).
isProperSubsetOf :: (Map map k) => map a -> map b -> Bool
-- | Similar to isSubmapOf, but also requires that the size of the
-- second map is greater than the first (so does not include the case
-- where the key sets are identical).
isProperSubmapOfBy :: (Map map k) => (a -> b -> Bool) -> map a -> map b -> Bool
-- | Use a map of the supplied type to sort a list of keys into ascending
-- order Slower than nubAscWith, but retains duplicate keys
sortAscWith :: (OrderedMap map k) => map Int -> [k] -> [k]
-- | Use a map of the supplied type to sort a list of keys into descending
-- order Slower than nubDescWith, but retains duplicate keys
sortDescWith :: (OrderedMap map k) => map Int -> [k] -> [k]
-- | Use a map of the supplied type to sort a list of keys into ascending
-- order (eliminating duplicates).
nubAscWith :: (OrderedMap map k) => map () -> [k] -> [k]
-- | Use a map of the supplied type to sort a list of keys into descending
-- order (eliminating duplicates).
nubDescWith :: (OrderedMap map k) => map () -> [k] -> [k]
instance (Eq k, Eq a) => Eq (Status k a)
module Data.GMap.AssocList
newtype AList k a
AL :: [(k, a)] -> AList k a
newtype SList map :: (* -> *) k a
SL :: [(k, a)] -> SList k a
sl :: (OrderedMap mp k) => [(k, a)] -> SList mp k a
data ImaginaryOrdMap k a
type OList k = SList (ImaginaryOrdMap k) k
instance (Eq k, Ord k) => OrderedMap (ImaginaryOrdMap k) k
instance (Eq k) => Map (ImaginaryOrdMap k) k
instance (Eq k, Ord k, OrderedMap mp k) => OrderedMap (SList mp k) k
instance (Eq k, Ord k, OrderedMap mp k) => Map (SList mp k) k
instance (Eq k) => Map (AList k) k
module Data.GMap.OrdMap
-- | The default Map type any key type which is an instance of
-- Ord. This is a newtype wrapper around
-- Data.Tree.AVL.AVL (k,a).
data OrdMap k a
instance Foldable (OrdMap k)
instance (Ord k, Monoid a) => Monoid (OrdMap k a)
instance Functor (OrdMap k)
instance (Typeable1 (OrdMap k), Typeable a) => Typeable (OrdMap k a)
instance (Ord k, Typeable k) => Typeable1 (OrdMap k)
instance (Ord k, Read k, Read a) => Read (OrdMap k a)
instance (Ord k, Show k, Show a) => Show (OrdMap k a)
instance (Ord k, Ord a) => Ord (OrdMap k a)
instance (Eq k, Eq a) => Eq (OrdMap k a)
instance (Ord k) => OrderedMap (OrdMap k) k
instance (Ord k) => Map (OrdMap k) k
module Data.GMap.IntMap
-- | The GT type for Int keys.
data IntMap a
instance (Eq a) => Eq (IAList a)
instance (Ord a) => Ord (IAList a)
instance Foldable IntMap
instance (Monoid a) => Monoid (IntMap a)
instance Functor IntMap
instance (Typeable a) => Typeable (IntMap a)
instance Typeable1 IntMap
instance (Read a) => Read (IntMap a)
instance (Show a) => Show (IntMap a)
instance (Ord a) => Ord (IntMap a)
instance (Eq a) => Eq (IntMap a)
instance OrderedMap IntMap Int
instance Map IntMap Int
module Data.GMap.ListMap
-- | The Map type for keys of form Map map k =>
-- [k].
data ListMap map k a
instance (Map map k) => Foldable (ListMap map k)
instance (Map map k, Monoid a) => Monoid (ListMap map k a)
instance (Map map k) => Functor (ListMap map k)
instance (Typeable1 (ListMap map k), Typeable a) => Typeable (ListMap map k a)
instance (Typeable1 map, Typeable k) => Typeable1 (ListMap map k)
instance (Map map k, Read k, Read a) => Read (ListMap map k a)
instance (Map map k, Show k, Show a) => Show (ListMap map k a)
instance (Map map k, Ord k, Ord a, Ord (map (ListMap map k a))) => Ord (ListMap map k a)
instance (Eq k, Eq a, Eq (map (ListMap map k a))) => Eq (ListMap map k a)
instance (OrderedMap map k) => OrderedMap (ListMap map k) [k]
instance (Map map k) => Map (ListMap map k) [k]
module Data.GMap.InjectKeys
data InjectKeys t k1 k2 map a
-- | t is a phantom type which determines the encoding and
-- decoding functions used. t is passed as an undefined value.
-- inject must be injective (ie (inject a) == (inject b) implies a
-- == b) and reversible by outject
class Injection t k1 k2 | t -> k1, t -> k2
inject :: (Injection t k1 k2) => t -> k1 -> k2
outject :: (Injection t k1 k2) => t -> k2 -> k1
instance (Map map k2) => Foldable (InjectKeys t k1 k2 map)
instance (Map map k2, Monoid a) => Monoid (InjectKeys t k1 k2 map a)
instance (Map map k2) => Functor (InjectKeys t k1 k2 map)
instance (Typeable1 (InjectKeys t k1 k2 map), Typeable a) => Typeable (InjectKeys t k1 k2 map a)
instance (Typeable1 map) => Typeable1 (InjectKeys t k1 k2 map)
instance (Ord (map a)) => Ord (InjectKeys t k1 k2 map a)
instance (Eq (map a)) => Eq (InjectKeys t k1 k2 map a)
instance (Eq k1, Injection t k1 k2, OrderedMap map k2) => OrderedMap (InjectKeys t k1 k2 map) k1
instance (Eq k1, Injection t k1 k2, Map map k2) => Map (InjectKeys t k1 k2 map) k1
module Data.GMap.ChoiceMap
data Choice2 a b
C1of2 :: a -> Choice2 a b
C2of2 :: b -> Choice2 a b
-- | The Map type for keys of form (Map mapL kL,
-- Map mapR kR) => Choice2 kL kR.
data Choice2Map mapL mapR kL kR a
data Choice3 a b c
C1of3 :: a -> Choice3 a b c
C2of3 :: b -> Choice3 a b c
C3of3 :: c -> Choice3 a b c
type Choice3Map mapa mapb mapc a b c = InjectKeys (InjectChoice3 a b c) (Choice3 a b c) (Choice2 a (Choice2 b c)) (Choice2Map mapa (Choice2Map mapb mapc b c) a (Choice2 b c))
data Choice4 a b c d
C1of4 :: a -> Choice4 a b c d
C2of4 :: b -> Choice4 a b c d
C3of4 :: c -> Choice4 a b c d
C4of4 :: d -> Choice4 a b c d
type Choice4Map mapa mapb mapc mapd a b c d = InjectKeys (InjectChoice4 a b c d) (Choice4 a b c d) (Choice2 (Choice2 a b) (Choice2 c d)) (Choice2Map (Choice2Map mapa mapb a b) (Choice2Map mapc mapd c d) (Choice2 a b) (Choice2 c d))
data Choice5 a b c d e
C1of5 :: a -> Choice5 a b c d e
C2of5 :: b -> Choice5 a b c d e
C3of5 :: c -> Choice5 a b c d e
C4of5 :: d -> Choice5 a b c d e
C5of5 :: e -> Choice5 a b c d e
type Choice5Map mapa mapb mapc mapd mape a b c d e = InjectKeys (InjectChoice5 a b c d e) (Choice5 a b c d e) (Choice2 (Choice2 a b) (Choice2 c (Choice2 d e))) (Choice2Map (Choice2Map mapa mapb a b) (Choice2Map mapc (Choice2Map mapd mape d e) c (Choice2 d e)) (Choice2 a b) (Choice2 c (Choice2 d e)))
instance (Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (Choice5 a b c d e)
instance (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (Choice5 a b c d e)
instance (Read a, Read b, Read c, Read d, Read e) => Read (Choice5 a b c d e)
instance (Show a, Show b, Show c, Show d, Show e) => Show (Choice5 a b c d e)
instance (Eq a, Eq b, Eq c, Eq d) => Eq (Choice4 a b c d)
instance (Ord a, Ord b, Ord c, Ord d) => Ord (Choice4 a b c d)
instance (Read a, Read b, Read c, Read d) => Read (Choice4 a b c d)
instance (Show a, Show b, Show c, Show d) => Show (Choice4 a b c d)
instance (Eq a, Eq b, Eq c) => Eq (Choice3 a b c)
instance (Ord a, Ord b, Ord c) => Ord (Choice3 a b c)
instance (Read a, Read b, Read c) => Read (Choice3 a b c)
instance (Show a, Show b, Show c) => Show (Choice3 a b c)
instance (Eq a, Eq b) => Eq (Choice2 a b)
instance (Ord a, Ord b) => Ord (Choice2 a b)
instance (Read a, Read b) => Read (Choice2 a b)
instance (Show a, Show b) => Show (Choice2 a b)
instance Injection (InjectChoice5 a b c d e) (Choice5 a b c d e) (Choice2 (Choice2 a b) (Choice2 c (Choice2 d e)))
instance Injection (InjectChoice4 a b c d) (Choice4 a b c d) (Choice2 (Choice2 a b) (Choice2 c d))
instance Injection (InjectChoice3 a b c) (Choice3 a b c) (Choice2 a (Choice2 b c))
instance (Map mapL kL, Map mapR kR) => Foldable (Choice2Map mapL mapR kL kR)
instance (Map mapL kL, Map mapR kR, Monoid a) => Monoid (Choice2Map mapL mapR kL kR a)
instance (Map mapL kL, Map mapR kR) => Functor (Choice2Map mapL mapR kL kR)
instance (Typeable1 (Choice2Map mapL mapR kL kR), Typeable a) => Typeable (Choice2Map mapL mapR kL kR a)
instance (Typeable1 mapL, Typeable1 mapR) => Typeable1 (Choice2Map mapL mapR kL kR)
instance (Map mapL kL, Map mapR kR, Read kL, Read kR, Read a) => Read (Choice2Map mapL mapR kL kR a)
instance (Map mapL kL, Map mapR kR, Show kL, Show kR, Show a) => Show (Choice2Map mapL mapR kL kR a)
instance (Map mapL kL, Map mapR kR, Ord (mapL a), Ord (mapR a)) => Ord (Choice2Map mapL mapR kL kR a)
instance (Eq (mapL a), Eq (mapR a)) => Eq (Choice2Map mapL mapR kL kR a)
instance (OrderedMap mapL kL, OrderedMap mapR kR) => OrderedMap (Choice2Map mapL mapR kL kR) (Choice2 kL kR)
instance (Map mapL kL, Map mapR kR) => Map (Choice2Map mapL mapR kL kR) (Choice2 kL kR)
module Data.GMap.EitherMap
type EitherMap mapL mapR l r = InjectKeys (InjectEither l r) (Either l r) (Choice2 l r) (Choice2Map mapL mapR l r)
instance Injection (InjectEither l r) (Either l r) (Choice2 l r)
module Data.GMap.UnitMap
-- | The default Map type unit (empty tuple) keys.
data UnitMap a
instance Foldable UnitMap
instance (Monoid a) => Monoid (UnitMap a)
instance Functor UnitMap
instance (Typeable a) => Typeable (UnitMap a)
instance Typeable1 UnitMap
instance (Read a) => Read (UnitMap a)
instance (Show a) => Show (UnitMap a)
instance (Ord a) => Ord (UnitMap a)
instance (Eq a) => Eq (UnitMap a)
instance OrderedMap UnitMap ()
instance Map UnitMap ()
module Data.GMap.MaybeMap
type MaybeMap map k = InjectKeys (InjectMaybe k) (Maybe k) (Choice2 k ()) (Choice2Map map UnitMap k ())
instance Injection (InjectMaybe k) (Maybe k) (Choice2 k ())
module Data.GMap.CacheKeys
-- | A map transformer that causes keys to be cached alongside elements
data CacheKeys mp k a
cacheKeys :: (Map mp k) => mp a -> CacheKeys mp k a
uncacheKeys :: (Map mp k) => CacheKeys mp k a -> mp a
instance (Map mp k) => Foldable (CacheKeys mp k)
instance (Map mp k, Monoid a) => Monoid (CacheKeys mp k a)
instance (Map mp k) => Functor (CacheKeys mp k)
instance (Typeable1 (CacheKeys mp k), Typeable a) => Typeable (CacheKeys mp k a)
instance (Typeable1 mp) => Typeable1 (CacheKeys mp k)
instance (Read k, Read a, Map mp k) => Read (CacheKeys mp k a)
instance (Show k, Show a, Map mp k) => Show (CacheKeys mp k a)
instance (Ord (mp (k, a))) => Ord (CacheKeys mp k a)
instance (Eq (mp (k, a))) => Eq (CacheKeys mp k a)
instance (OrderedMap mp k) => OrderedMap (CacheKeys mp k) k
instance (Map mp k) => Map (CacheKeys mp k) k
module Data.GMap.EnumMap
type EnumMap k = InjectKeys (InjectEnum k) k Int IntMap
instance (Enum k) => Injection (InjectEnum k) k Int
module Data.GMap.TupleMap
data Tuple2Map map1 map2 k1 k2 a
type Tuple3Map mapa mapb mapc a b c = InjectKeys (InjectTuple3 a b c) (a, b, c) (a, (b, c)) (Tuple2Map mapa (Tuple2Map mapb mapc b c) a (b, c))
type Tuple4Map mapa mapb mapc mapd a b c d = InjectKeys (InjectTuple4 a b c d) (a, b, c, d) (a, (b, (c, d))) (Tuple2Map mapa (Tuple2Map mapb (Tuple2Map mapc mapd c d) b (c, d)) a (b, (c, d)))
type Tuple5Map mapa mapb mapc mapd mape a b c d e = InjectKeys (InjectTuple5 a b c d e) (a, b, c, d, e) (a, (b, (c, (d, e)))) (Tuple2Map mapa (Tuple2Map mapb (Tuple2Map mapc (Tuple2Map mapd mape d e) c (d, e)) b (c, (d, e))) a (b, (c, (d, e))))
instance Injection (InjectTuple5 a b c d e) (a, b, c, d, e) (a, (b, (c, (d, e))))
instance Injection (InjectTuple4 a b c d) (a, b, c, d) (a, (b, (c, d)))
instance Injection (InjectTuple3 a b c) (a, b, c) (a, (b, c))
instance (Map map1 k1, Map map2 k2) => Foldable (Tuple2Map map1 map2 k1 k2)
instance (Map map1 k1, Map map2 k2, Monoid a) => Monoid (Tuple2Map map1 map2 k1 k2 a)
instance (Map map1 k1, Map map2 k2) => Functor (Tuple2Map map1 map2 k1 k2)
instance (Typeable1 (Tuple2Map map1 map2 k1 k2), Typeable a) => Typeable (Tuple2Map map1 map2 k1 k2 a)
instance (Typeable1 map1, Typeable1 map2) => Typeable1 (Tuple2Map map1 map2 k1 k2)
instance (Map map1 k1, Map map2 k2, Read k1, Read k2, Read a) => Read (Tuple2Map map1 map2 k1 k2 a)
instance (Map map1 k1, Map map2 k2, Show k1, Show k2, Show a) => Show (Tuple2Map map1 map2 k1 k2 a)
instance (Map map1 k1, Map map2 k2, Ord (map1 (map2 a))) => Ord (Tuple2Map map1 map2 k1 k2 a)
instance (Eq (map1 (map2 a))) => Eq (Tuple2Map map1 map2 k1 k2 a)
instance (OrderedMap map1 k1, OrderedMap map2 k2) => OrderedMap (Tuple2Map map1 map2 k1 k2) (k1, k2)
instance (Map map1 k1, Map map2 k2) => Map (Tuple2Map map1 map2 k1 k2) (k1, k2)
module Test.GMap.Utils
data Test m1 m2
SimpleTest :: (m1 -> b) -> Test m1 m2
SimpleTest2 :: ((m1, m1) -> b) -> Test m1 m2
CompareTest :: (m1 -> a -> b) -> (m2 -> a -> b) -> Test m1 m2
CompareTest2 :: ((m1, m1) -> a -> b) -> ((m2, m2) -> a -> b) -> Test m1 m2
compareTest :: (OrderedMap mp1 k, OrderedMap mp2 k, Arbitrary a, Show a, Eq b, Ord k) => (forall mp. (OrderedMap mp k, Eq k, Ord k) => (mp e) -> a -> b) -> Test (mp1 e) (mp2 e)
compareTest2 :: (OrderedMap mp1 k, OrderedMap mp2 k, Arbitrary a, Show a, Eq b, Ord k) => (forall mp. (OrderedMap mp k, Eq k, Ord k) => (mp e, mp e) -> a -> b) -> Test (mp1 e) (mp2 e)
type Tests m1 m2 = [(Test m1 m2, String)]
runTests :: (Testable (Test m1 m2)) => Tests m1 m2 -> Int -> IO ()
runAListTest :: (OrderedMap mp k, Testable (Test (mp a) (AList k a))) => (mp a) -> Tests (mp a) (AList k a) -> Int -> IO ()
runSListTest :: (OrderedMap mp k, Testable (Test (mp a) (SList mp k a))) => (mp a) -> Tests (mp a) (SList mp k a) -> Int -> IO ()
instance [incoherent] (OrderedMap mp1 k, OrderedMap mp2 k, Show (mp1 a), Show (mp2 a), Arbitrary k, Arbitrary a, Show k, Show a) => Testable (Test (mp1 a) (mp2 a))
instance [incoherent] (Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d, Arbitrary e) => Arbitrary (Choice5 a b c d e)
instance [incoherent] (Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d) => Arbitrary (Choice4 a b c d)
instance [incoherent] (Arbitrary a, Arbitrary b, Arbitrary c) => Arbitrary (Choice3 a b c)
instance [incoherent] (Arbitrary a, Arbitrary b) => Arbitrary (Choice2 a b)
instance [incoherent] (Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d, Arbitrary e) => Arbitrary (a, b, c, d, e)
instance [incoherent] Arbitrary Char
instance [incoherent] (OrderedMap map k, Show k, Show a) => Show (map a)
instance [incoherent] (OrderedMap map k, Arbitrary k, Arbitrary a) => Arbitrary (map a)
instance [incoherent] Show (a -> b)
module Test.GMap
mapSortKeys :: (OrderedMap map k) => map a -> [k] -> [k]
mapSortAssocs :: (OrderedMap map k) => map a -> [(k, a)] -> [(k, a)]
isLazyMerge :: (OrderedMap map k) => map a -> map a -> k -> (map a -> map a -> map a) -> Bool
isStrictMerge :: (OrderedMap map k) => map a -> map a -> k -> (map a -> map a -> map a) -> Bool
vennAssocs :: (OrderedMap map k, Ord k) => (map a, map a, map a) -> ([(k, a)], [(k, a)], [(k, a)])
keyedLike :: (OrderedMap map k) => map a -> map b -> map a