Copyright | (C) 2016-2018 Daniel Wagner 2019 Ryan Scott |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | Ryan Scott |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Language.Haskell.TH.Desugar.OMap
Description
An OMap
behaves much like a Map
, with all the same asymptotics, but
also remembers the order that keys were inserted.
This module offers a simplified version of the Data.Map.Ordered API
that assumes left-biased indices everywhere and uses a different Semigroup
instance (the one in this module uses (
) and <>
) = union
Monoid
instance (the one in this module uses
).mappend
= union
Synopsis
- newtype OMap k v = OMap (Bias L (OMap k v))
- empty :: forall k v. OMap k v
- singleton :: k -> v -> OMap k v
- insertPre :: Ord k => k -> v -> OMap k v -> OMap k v
- insertPost :: Ord k => OMap k v -> k -> v -> OMap k v
- union :: forall k v. Ord k => OMap k v -> OMap k v -> OMap k v
- unionWithKey :: Ord k => (k -> v -> v -> v) -> OMap k v -> OMap k v -> OMap k v
- delete :: forall k v. Ord k => k -> OMap k v -> OMap k v
- filterWithKey :: Ord k => (k -> v -> Bool) -> OMap k v -> OMap k v
- (\\) :: forall k v v'. Ord k => OMap k v -> OMap k v' -> OMap k v
- intersection :: forall k v v'. Ord k => OMap k v -> OMap k v' -> OMap k v
- intersectionWithKey :: Ord k => (k -> v -> v' -> v'') -> OMap k v -> OMap k v' -> OMap k v''
- null :: forall k v. OMap k v -> Bool
- size :: forall k v. OMap k v -> Int
- member :: forall k v. Ord k => k -> OMap k v -> Bool
- notMember :: forall k v. Ord k => k -> OMap k v -> Bool
- lookup :: forall k v. Ord k => k -> OMap k v -> Maybe v
- type Index = Int
- lookupIndex :: forall k v. Ord k => k -> OMap k v -> Maybe Index
- lookupAt :: forall k v. Index -> OMap k v -> Maybe (k, v)
- fromList :: Ord k => [(k, v)] -> OMap k v
- assocs :: forall k v. OMap k v -> [(k, v)]
- toAscList :: forall k v. OMap k v -> [(k, v)]
- toMap :: forall k v. OMap k v -> Map k v
Documentation
An ordered map whose insertPre
, insertPost
, intersection
,
intersectionWithKey
, union
, and unionWithKey
operations are biased
towards leftmost indices when when breaking ties between keys.
Instances
Foldable (OMap k) Source # | |
Defined in Language.Haskell.TH.Desugar.OMap Methods fold :: Monoid m => OMap k m -> m Source # foldMap :: Monoid m => (a -> m) -> OMap k a -> m Source # foldMap' :: Monoid m => (a -> m) -> OMap k a -> m Source # foldr :: (a -> b -> b) -> b -> OMap k a -> b Source # foldr' :: (a -> b -> b) -> b -> OMap k a -> b Source # foldl :: (b -> a -> b) -> b -> OMap k a -> b Source # foldl' :: (b -> a -> b) -> b -> OMap k a -> b Source # foldr1 :: (a -> a -> a) -> OMap k a -> a Source # foldl1 :: (a -> a -> a) -> OMap k a -> a Source # toList :: OMap k a -> [a] Source # null :: OMap k a -> Bool Source # length :: OMap k a -> Int Source # elem :: Eq a => a -> OMap k a -> Bool Source # maximum :: Ord a => OMap k a -> a Source # minimum :: Ord a => OMap k a -> a Source # | |
Ord k => Traversable (OMap k) Source # | |
Defined in Language.Haskell.TH.Desugar.OMap | |
Functor (OMap k) Source # | |
(Data k, Data v, Ord k) => Data (OMap k v) Source # | |
Defined in Language.Haskell.TH.Desugar.OMap Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OMap k v -> c (OMap k v) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (OMap k v) Source # toConstr :: OMap k v -> Constr Source # dataTypeOf :: OMap k v -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (OMap k v)) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (OMap k v)) Source # gmapT :: (forall b. Data b => b -> b) -> OMap k v -> OMap k v Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OMap k v -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OMap k v -> r Source # gmapQ :: (forall d. Data d => d -> u) -> OMap k v -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> OMap k v -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> OMap k v -> m (OMap k v) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OMap k v -> m (OMap k v) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OMap k v -> m (OMap k v) Source # | |
Ord k => Monoid (OMap k v) Source # | |
Ord k => Semigroup (OMap k v) Source # | |
(Ord k, Read k, Read v) => Read (OMap k v) Source # | |
(Show k, Show v) => Show (OMap k v) Source # | |
(Eq k, Eq v) => Eq (OMap k v) Source # | |
(Ord k, Ord v) => Ord (OMap k v) Source # | |
Defined in Language.Haskell.TH.Desugar.OMap |
Trivial maps
Insertion
insertPre :: Ord k => k -> v -> OMap k v -> OMap k v Source #
The value's index will be lower than the indices of the values in the
OSet
.
insertPost :: Ord k => OMap k v -> k -> v -> OMap k v Source #
The value's index will be higher than the indices of the values in the
OSet
.
Deletion
intersectionWithKey :: Ord k => (k -> v -> v' -> v'') -> OMap k v -> OMap k v' -> OMap k v'' Source #
Query
Indexing
A 0-based index, much like the indices used by lists' !!
operation. All
indices are with respect to insertion order.