EnumMap 0.0.1 → 0.0.2
raw patch · 2 files changed
+6/−3 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.EnumMap: instance (Enum k) => Functor (EnumMap k)
- Data.EnumMap: instance (Enum k) => Monoid (EnumMap k a)
- Data.EnumMap: instance (Eq a) => Eq (EnumMap k a)
+ Data.EnumMap: instance Enum k => Functor (EnumMap k)
+ Data.EnumMap: instance Enum k => Monoid (EnumMap k a)
+ Data.EnumMap: instance Eq a => Eq (EnumMap k a)
- Data.EnumMap: (\\) :: (Enum k) => EnumMap k a -> EnumMap k b -> EnumMap k a
+ Data.EnumMap: (\\) :: Enum k => EnumMap k a -> EnumMap k b -> EnumMap k a
- Data.EnumMap: adjust :: (Enum k) => (a -> a) -> k -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: adjust :: Enum k => (a -> a) -> k -> EnumMap k a -> EnumMap k a
- Data.EnumMap: adjustWithKey :: (Enum k) => (k -> a -> a) -> k -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: adjustWithKey :: Enum k => (k -> a -> a) -> k -> EnumMap k a -> EnumMap k a
- Data.EnumMap: assocs :: (Enum k) => EnumMap k a -> [(k, a)]
+ Data.EnumMap: assocs :: Enum k => EnumMap k a -> [(k, a)]
- Data.EnumMap: delete :: (Enum k) => k -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: delete :: Enum k => k -> EnumMap k a -> EnumMap k a
- Data.EnumMap: deleteFindMax :: (Enum k) => EnumMap k a -> (a, EnumMap k a)
+ Data.EnumMap: deleteFindMax :: Enum k => EnumMap k a -> (a, EnumMap k a)
- Data.EnumMap: deleteFindMin :: (Enum k) => EnumMap k a -> (a, EnumMap k a)
+ Data.EnumMap: deleteFindMin :: Enum k => EnumMap k a -> (a, EnumMap k a)
- Data.EnumMap: deleteMax :: (Enum k) => EnumMap k a -> EnumMap k a
+ Data.EnumMap: deleteMax :: Enum k => EnumMap k a -> EnumMap k a
- Data.EnumMap: deleteMin :: (Enum k) => EnumMap k a -> EnumMap k a
+ Data.EnumMap: deleteMin :: Enum k => EnumMap k a -> EnumMap k a
- Data.EnumMap: difference :: (Enum k) => EnumMap k a -> EnumMap k b -> EnumMap k a
+ Data.EnumMap: difference :: Enum k => EnumMap k a -> EnumMap k b -> EnumMap k a
- Data.EnumMap: differenceWith :: (Enum k) => (a -> b -> Maybe a) -> EnumMap k a -> EnumMap k b -> EnumMap k a
+ Data.EnumMap: differenceWith :: Enum k => (a -> b -> Maybe a) -> EnumMap k a -> EnumMap k b -> EnumMap k a
- Data.EnumMap: differenceWithKey :: (Enum k) => (k -> a -> b -> Maybe a) -> EnumMap k a -> EnumMap k b -> EnumMap k a
+ Data.EnumMap: differenceWithKey :: Enum k => (k -> a -> b -> Maybe a) -> EnumMap k a -> EnumMap k b -> EnumMap k a
- Data.EnumMap: elems :: (Enum k) => EnumMap k a -> [a]
+ Data.EnumMap: elems :: Enum k => EnumMap k a -> [a]
- Data.EnumMap: filter :: (Enum k) => (a -> Bool) -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: filter :: Enum k => (a -> Bool) -> EnumMap k a -> EnumMap k a
- Data.EnumMap: filterWithKey :: (Enum k) => (k -> a -> Bool) -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: filterWithKey :: Enum k => (k -> a -> Bool) -> EnumMap k a -> EnumMap k a
- Data.EnumMap: findMax :: (Enum k) => EnumMap k a -> a
+ Data.EnumMap: findMax :: Enum k => EnumMap k a -> a
- Data.EnumMap: findMin :: (Enum k) => EnumMap k a -> a
+ Data.EnumMap: findMin :: Enum k => EnumMap k a -> a
- Data.EnumMap: findWithDefault :: (Enum k) => a -> k -> EnumMap k a -> a
+ Data.EnumMap: findWithDefault :: Enum k => a -> k -> EnumMap k a -> a
- Data.EnumMap: fold :: (Enum k) => (a -> b -> b) -> b -> EnumMap k a -> b
+ Data.EnumMap: fold :: Enum k => (a -> b -> b) -> b -> EnumMap k a -> b
- Data.EnumMap: foldWithKey :: (Enum k) => (k -> a -> b -> b) -> b -> EnumMap k a -> b
+ Data.EnumMap: foldWithKey :: Enum k => (k -> a -> b -> b) -> b -> EnumMap k a -> b
- Data.EnumMap: fromAscList :: (Enum k) => [(k, a)] -> EnumMap k a
+ Data.EnumMap: fromAscList :: Enum k => [(k, a)] -> EnumMap k a
- Data.EnumMap: fromAscListWith :: (Enum k) => (a -> a -> a) -> [(k, a)] -> EnumMap k a
+ Data.EnumMap: fromAscListWith :: Enum k => (a -> a -> a) -> [(k, a)] -> EnumMap k a
- Data.EnumMap: fromAscListWithKey :: (Enum k) => (k -> a -> a -> a) -> [(k, a)] -> EnumMap k a
+ Data.EnumMap: fromAscListWithKey :: Enum k => (k -> a -> a -> a) -> [(k, a)] -> EnumMap k a
- Data.EnumMap: fromDistinctAscList :: (Enum k) => [(k, a)] -> EnumMap k a
+ Data.EnumMap: fromDistinctAscList :: Enum k => [(k, a)] -> EnumMap k a
- Data.EnumMap: fromList :: (Enum k) => [(k, a)] -> EnumMap k a
+ Data.EnumMap: fromList :: Enum k => [(k, a)] -> EnumMap k a
- Data.EnumMap: fromListWith :: (Enum k) => (a -> a -> a) -> [(k, a)] -> EnumMap k a
+ Data.EnumMap: fromListWith :: Enum k => (a -> a -> a) -> [(k, a)] -> EnumMap k a
- Data.EnumMap: fromListWithKey :: (Enum k) => (k -> a -> a -> a) -> [(k, a)] -> EnumMap k a
+ Data.EnumMap: fromListWithKey :: Enum k => (k -> a -> a -> a) -> [(k, a)] -> EnumMap k a
- Data.EnumMap: insert :: (Enum k) => k -> a -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: insert :: Enum k => k -> a -> EnumMap k a -> EnumMap k a
- Data.EnumMap: insertLookupWithKey :: (Enum k) => (k -> a -> a -> a) -> k -> a -> EnumMap k a -> (Maybe a, EnumMap k a)
+ Data.EnumMap: insertLookupWithKey :: Enum k => (k -> a -> a -> a) -> k -> a -> EnumMap k a -> (Maybe a, EnumMap k a)
- Data.EnumMap: insertWith :: (Enum k) => (a -> a -> a) -> k -> a -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: insertWith :: Enum k => (a -> a -> a) -> k -> a -> EnumMap k a -> EnumMap k a
- Data.EnumMap: insertWithKey :: (Enum k) => (k -> a -> a -> a) -> k -> a -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: insertWithKey :: Enum k => (k -> a -> a -> a) -> k -> a -> EnumMap k a -> EnumMap k a
- Data.EnumMap: intersection :: (Enum k) => EnumMap k a -> EnumMap k b -> EnumMap k a
+ Data.EnumMap: intersection :: Enum k => EnumMap k a -> EnumMap k b -> EnumMap k a
- Data.EnumMap: intersectionWith :: (Enum k) => (a -> b -> a) -> EnumMap k a -> EnumMap k b -> EnumMap k a
+ Data.EnumMap: intersectionWith :: Enum k => (a -> b -> a) -> EnumMap k a -> EnumMap k b -> EnumMap k a
- Data.EnumMap: intersectionWithKey :: (Enum k) => (k -> a -> b -> a) -> EnumMap k a -> EnumMap k b -> EnumMap k a
+ Data.EnumMap: intersectionWithKey :: Enum k => (k -> a -> b -> a) -> EnumMap k a -> EnumMap k b -> EnumMap k a
- Data.EnumMap: isProperSubmapOfBy :: (Enum k) => (a -> b -> Bool) -> EnumMap k a -> EnumMap k b -> Bool
+ Data.EnumMap: isProperSubmapOfBy :: Enum k => (a -> b -> Bool) -> EnumMap k a -> EnumMap k b -> Bool
- Data.EnumMap: isSubmapOfBy :: (Enum k) => (a -> b -> Bool) -> EnumMap k a -> EnumMap k b -> Bool
+ Data.EnumMap: isSubmapOfBy :: Enum k => (a -> b -> Bool) -> EnumMap k a -> EnumMap k b -> Bool
- Data.EnumMap: keys :: (Enum k) => EnumMap k a -> [k]
+ Data.EnumMap: keys :: Enum k => EnumMap k a -> [k]
- Data.EnumMap: keysSet :: (Enum k) => EnumMap k a -> IntSet
+ Data.EnumMap: keysSet :: Enum k => EnumMap k a -> IntSet
- Data.EnumMap: lookup :: (Enum k) => k -> EnumMap k a -> Maybe a
+ Data.EnumMap: lookup :: Enum k => k -> EnumMap k a -> Maybe a
- Data.EnumMap: map :: (Enum k) => (a -> b) -> EnumMap k a -> EnumMap k b
+ Data.EnumMap: map :: Enum k => (a -> b) -> EnumMap k a -> EnumMap k b
- Data.EnumMap: mapAccum :: (Enum k) => (a -> b -> (a, c)) -> a -> EnumMap k b -> (a, EnumMap k c)
+ Data.EnumMap: mapAccum :: Enum k => (a -> b -> (a, c)) -> a -> EnumMap k b -> (a, EnumMap k c)
- Data.EnumMap: mapAccumWithKey :: (Enum k) => (a -> k -> b -> (a, c)) -> a -> EnumMap k b -> (a, EnumMap k c)
+ Data.EnumMap: mapAccumWithKey :: Enum k => (a -> k -> b -> (a, c)) -> a -> EnumMap k b -> (a, EnumMap k c)
- Data.EnumMap: mapEither :: (Enum k) => (a -> Either b c) -> EnumMap k a -> (EnumMap k b, EnumMap k c)
+ Data.EnumMap: mapEither :: Enum k => (a -> Either b c) -> EnumMap k a -> (EnumMap k b, EnumMap k c)
- Data.EnumMap: mapEitherWithKey :: (Enum k) => (k -> a -> Either b c) -> EnumMap k a -> (EnumMap k b, EnumMap k c)
+ Data.EnumMap: mapEitherWithKey :: Enum k => (k -> a -> Either b c) -> EnumMap k a -> (EnumMap k b, EnumMap k c)
- Data.EnumMap: mapMaybe :: (Enum k) => (a -> Maybe b) -> EnumMap k a -> EnumMap k b
+ Data.EnumMap: mapMaybe :: Enum k => (a -> Maybe b) -> EnumMap k a -> EnumMap k b
- Data.EnumMap: mapMaybeWithKey :: (Enum k) => (k -> a -> Maybe b) -> EnumMap k a -> EnumMap k b
+ Data.EnumMap: mapMaybeWithKey :: Enum k => (k -> a -> Maybe b) -> EnumMap k a -> EnumMap k b
- Data.EnumMap: mapWithKey :: (Enum k) => (k -> a -> b) -> EnumMap k a -> EnumMap k b
+ Data.EnumMap: mapWithKey :: Enum k => (k -> a -> b) -> EnumMap k a -> EnumMap k b
- Data.EnumMap: maxView :: (Enum k) => EnumMap k a -> Maybe (a, EnumMap k a)
+ Data.EnumMap: maxView :: Enum k => EnumMap k a -> Maybe (a, EnumMap k a)
- Data.EnumMap: maxViewWithKey :: (Enum k) => EnumMap k a -> Maybe ((k, a), EnumMap k a)
+ Data.EnumMap: maxViewWithKey :: Enum k => EnumMap k a -> Maybe ((k, a), EnumMap k a)
- Data.EnumMap: member :: (Enum k) => k -> EnumMap k a -> Bool
+ Data.EnumMap: member :: Enum k => k -> EnumMap k a -> Bool
- Data.EnumMap: minView :: (Enum k) => EnumMap k a -> Maybe (a, EnumMap k a)
+ Data.EnumMap: minView :: Enum k => EnumMap k a -> Maybe (a, EnumMap k a)
- Data.EnumMap: minViewWithKey :: (Enum k) => EnumMap k a -> Maybe ((k, a), EnumMap k a)
+ Data.EnumMap: minViewWithKey :: Enum k => EnumMap k a -> Maybe ((k, a), EnumMap k a)
- Data.EnumMap: notMember :: (Enum k) => k -> EnumMap k a -> Bool
+ Data.EnumMap: notMember :: Enum k => k -> EnumMap k a -> Bool
- Data.EnumMap: partition :: (Enum k) => (a -> Bool) -> EnumMap k a -> (EnumMap k a, EnumMap k a)
+ Data.EnumMap: partition :: Enum k => (a -> Bool) -> EnumMap k a -> (EnumMap k a, EnumMap k a)
- Data.EnumMap: partitionWithKey :: (Enum k) => (k -> a -> Bool) -> EnumMap k a -> (EnumMap k a, EnumMap k a)
+ Data.EnumMap: partitionWithKey :: Enum k => (k -> a -> Bool) -> EnumMap k a -> (EnumMap k a, EnumMap k a)
- Data.EnumMap: showTree :: (Show a) => EnumMap k a -> String
+ Data.EnumMap: showTree :: Show a => EnumMap k a -> String
- Data.EnumMap: showTreeWith :: (Show a) => Bool -> Bool -> EnumMap k a -> String
+ Data.EnumMap: showTreeWith :: Show a => Bool -> Bool -> EnumMap k a -> String
- Data.EnumMap: singleton :: (Enum k) => k -> a -> EnumMap k a
+ Data.EnumMap: singleton :: Enum k => k -> a -> EnumMap k a
- Data.EnumMap: split :: (Enum k) => k -> EnumMap k a -> (EnumMap k a, EnumMap k a)
+ Data.EnumMap: split :: Enum k => k -> EnumMap k a -> (EnumMap k a, EnumMap k a)
- Data.EnumMap: splitLookup :: (Enum k) => k -> EnumMap k a -> (EnumMap k a, Maybe a, EnumMap k a)
+ Data.EnumMap: splitLookup :: Enum k => k -> EnumMap k a -> (EnumMap k a, Maybe a, EnumMap k a)
- Data.EnumMap: toList :: (Enum k) => EnumMap k a -> [(k, a)]
+ Data.EnumMap: toList :: Enum k => EnumMap k a -> [(k, a)]
- Data.EnumMap: union :: (Enum k) => EnumMap k a -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: union :: Enum k => EnumMap k a -> EnumMap k a -> EnumMap k a
- Data.EnumMap: unionWith :: (Enum k) => (a -> a -> a) -> EnumMap k a -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: unionWith :: Enum k => (a -> a -> a) -> EnumMap k a -> EnumMap k a -> EnumMap k a
- Data.EnumMap: unionWithKey :: (Enum k) => (k -> a -> a -> a) -> EnumMap k a -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: unionWithKey :: Enum k => (k -> a -> a -> a) -> EnumMap k a -> EnumMap k a -> EnumMap k a
- Data.EnumMap: unions :: (Enum k) => [EnumMap k a] -> EnumMap k a
+ Data.EnumMap: unions :: Enum k => [EnumMap k a] -> EnumMap k a
- Data.EnumMap: unionsWith :: (Enum k) => (a -> a -> a) -> [EnumMap k a] -> EnumMap k a
+ Data.EnumMap: unionsWith :: Enum k => (a -> a -> a) -> [EnumMap k a] -> EnumMap k a
- Data.EnumMap: update :: (Enum k) => (a -> Maybe a) -> k -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: update :: Enum k => (a -> Maybe a) -> k -> EnumMap k a -> EnumMap k a
- Data.EnumMap: updateLookupWithKey :: (Enum k) => (k -> a -> Maybe a) -> k -> EnumMap k a -> (Maybe a, EnumMap k a)
+ Data.EnumMap: updateLookupWithKey :: Enum k => (k -> a -> Maybe a) -> k -> EnumMap k a -> (Maybe a, EnumMap k a)
- Data.EnumMap: updateMax :: (Enum k) => (a -> a) -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: updateMax :: Enum k => (a -> a) -> EnumMap k a -> EnumMap k a
- Data.EnumMap: updateMaxWithKey :: (Enum k) => (k -> a -> a) -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: updateMaxWithKey :: Enum k => (k -> a -> a) -> EnumMap k a -> EnumMap k a
- Data.EnumMap: updateMin :: (Enum k) => (a -> a) -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: updateMin :: Enum k => (a -> a) -> EnumMap k a -> EnumMap k a
- Data.EnumMap: updateMinWithKey :: (Enum k) => (k -> a -> a) -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: updateMinWithKey :: Enum k => (k -> a -> a) -> EnumMap k a -> EnumMap k a
- Data.EnumMap: updateWithKey :: (Enum k) => (k -> a -> Maybe a) -> k -> EnumMap k a -> EnumMap k a
+ Data.EnumMap: updateWithKey :: Enum k => (k -> a -> Maybe a) -> k -> EnumMap k a -> EnumMap k a
Files
- EnumMap.cabal +2/−2
- src/Data/EnumMap.hs +4/−1
EnumMap.cabal view
@@ -1,5 +1,5 @@ name: EnumMap-version: 0.0.1+version: 0.0.2 author: John Van Enk maintainer: vanenkj@gmail.com license: BSD3@@ -20,4 +20,4 @@ containers >= 0.2.0.1 && < 0.3 exposed-modules: Data.EnumMap hs-source-dirs: src/- ghc-options: -Wall+ ghc-options: -O2 -Wall
src/Data/EnumMap.hs view
@@ -200,9 +200,11 @@ -- A "Nat" is a natural machine word (an unsigned Int) type Nat = Word +{-# INLINE natFromInt #-} natFromInt :: (Enum k) => k -> Nat natFromInt i = fromIntegral . fromEnum $ i +{-# INLINE intFromNat #-} intFromNat :: (Enum k) => Nat -> k intFromNat w = toEnum . fromIntegral $ w @@ -389,7 +391,7 @@ -- > insert 5 'x' (fromList [(5,'a'), (3,'b')]) == fromList [(3, 'b'), (5, 'x')] -- > insert 7 'x' (fromList [(5,'a'), (3,'b')]) == fromList [(3, 'b'), (5, 'a'), (7, 'x')] -- > insert 5 'x' empty == singleton 5 'x'-+{-# SPECIALIZE insert :: Int -> a -> EnumMap Int a -> EnumMap Int a #-} insert :: (Enum k) => k -> a -> EnumMap k a -> EnumMap k a insert k x t = case t of@@ -1674,6 +1676,7 @@ {-------------------------------------------------------------------- Join --------------------------------------------------------------------}+{-# SPECIALIZE join :: Prefix -> EnumMap Int a -> Prefix -> EnumMap Int a -> EnumMap Int a #-} join :: Prefix -> EnumMap k a -> Prefix -> EnumMap k a -> EnumMap k a join p1 t1 p2 t2 | zero p1 m = Bin p m t1 t2