{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -O2 #-}
module Data.Map.Unboxed.Unlifted
( Map
, empty
, singleton
, lookup
, size
, map
, mapLifted
, mapMaybe
, mapMaybeP
, mapMaybeWithKey
, adjustMany
, foldlWithKey'
, foldrWithKey'
, foldMapWithKey
, foldMapWithKey'
, foldlWithKeyM'
, foldrWithKeyM'
, foldlMapWithKeyM'
, foldrMapWithKeyM'
, traverse
, traverseWithKey
, traverseWithKey_
, fromList
, fromListAppend
, fromListN
, fromListAppendN
, fromSet
, fromSetP
, unsafeFreezeZip
) where
import Prelude hiding (lookup,map,traverse)
import Control.Monad.Primitive (PrimMonad)
import Control.Monad.ST (ST)
import Data.Primitive (PrimArray,MutablePrimArray)
import Data.Primitive.Types (Prim)
import Data.Primitive.Unlifted.Array (UnliftedArray,MutableUnliftedArray)
import Data.Primitive.Unlifted.Class (PrimUnlifted)
import Data.Semigroup (Semigroup)
import Data.Set.Unboxed.Internal (Set(..))
import qualified Data.Map.Unboxed.Lifted as MUL
import qualified Data.Map.Internal as I
import qualified Data.Semigroup as SG
import qualified GHC.Exts as E
newtype Map k v = Map (I.Map PrimArray UnliftedArray k v)
instance (Prim k, Ord k, PrimUnlifted v, Semigroup v) => Semigroup (Map k v) where
Map Map PrimArray UnliftedArray k v
x <> :: Map k v -> Map k v -> Map k v
<> Map Map PrimArray UnliftedArray k v
y = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Ord k, Semigroup v) =>
Map karr varr k v -> Map karr varr k v -> Map karr varr k v
I.append Map PrimArray UnliftedArray k v
x Map PrimArray UnliftedArray k v
y)
instance (Prim k, Ord k, PrimUnlifted v, Semigroup v) => Monoid (Map k v) where
mempty :: Map k v
mempty = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall (karr :: * -> *) (varr :: * -> *) k v.
(ContiguousU karr, ContiguousU varr) =>
Map karr varr k v
I.empty
mappend :: Map k v -> Map k v -> Map k v
mappend = forall a. Semigroup a => a -> a -> a
(SG.<>)
mconcat :: [Map k v] -> Map k v
mconcat = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v, Semigroup v) =>
[Map karr varr k v] -> Map karr varr k v
I.concat forall b c a. (b -> c) -> (a -> b) -> a -> c
. coerce :: forall a b. Coercible a b => a -> b
E.coerce
instance (Prim k, Eq k, PrimUnlifted v, Eq v) => Eq (Map k v) where
Map Map PrimArray UnliftedArray k v
x == :: Map k v -> Map k v -> Bool
== Map Map PrimArray UnliftedArray k v
y = forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Eq k, ContiguousU varr,
Element varr v, Eq v) =>
Map karr varr k v -> Map karr varr k v -> Bool
I.equals Map PrimArray UnliftedArray k v
x Map PrimArray UnliftedArray k v
y
instance (Prim k, Ord k, PrimUnlifted v, Ord v) => Ord (Map k v) where
compare :: Map k v -> Map k v -> Ordering
compare (Map Map PrimArray UnliftedArray k v
x) (Map Map PrimArray UnliftedArray k v
y) = forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v, Ord v) =>
Map karr varr k v -> Map karr varr k v -> Ordering
I.compare Map PrimArray UnliftedArray k v
x Map PrimArray UnliftedArray k v
y
instance (Prim k, Ord k, PrimUnlifted v) => E.IsList (Map k v) where
type Item (Map k v) = (k,v)
fromListN :: Int -> [Item (Map k v)] -> Map k v
fromListN Int
n = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v) =>
Int -> [(k, v)] -> Map karr varr k v
I.fromListN Int
n
fromList :: [Item (Map k v)] -> Map k v
fromList = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v) =>
[(k, v)] -> Map karr varr k v
I.fromList
toList :: Map k v -> [Item (Map k v)]
toList (Map Map PrimArray UnliftedArray k v
s) = forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
Map karr varr k v -> [(k, v)]
I.toList Map PrimArray UnliftedArray k v
s
instance (Prim k, Show k, PrimUnlifted v, Show v) => Show (Map k v) where
showsPrec :: Int -> Map k v -> ShowS
showsPrec Int
p (Map Map PrimArray UnliftedArray k v
s) = forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Show k, ContiguousU varr,
Element varr v, Show v) =>
Int -> Map karr varr k v -> ShowS
I.showsPrec Int
p Map PrimArray UnliftedArray k v
s
empty :: Map k v
empty :: forall k v. Map k v
empty = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall (karr :: * -> *) (varr :: * -> *) k v.
(ContiguousU karr, ContiguousU varr) =>
Map karr varr k v
I.empty
lookup :: (Prim k, Ord k, PrimUnlifted v) => k -> Map k v -> Maybe v
lookup :: forall k v.
(Prim k, Ord k, PrimUnlifted v) =>
k -> Map k v -> Maybe v
lookup k
a (Map Map PrimArray UnliftedArray k v
s) = forall (karr :: * -> *) (varr :: * -> *) k v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v) =>
k -> Map karr varr k v -> Maybe v
I.lookup k
a Map PrimArray UnliftedArray k v
s
singleton :: (Prim k, PrimUnlifted v) => k -> v -> Map k v
singleton :: forall k v. (Prim k, PrimUnlifted v) => k -> v -> Map k v
singleton k
k v
v = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
k -> v -> Map karr varr k v
I.singleton k
k v
v)
fromList :: (Prim k, Ord k, PrimUnlifted v) => [(k,v)] -> Map k v
fromList :: forall k v. (Prim k, Ord k, PrimUnlifted v) => [(k, v)] -> Map k v
fromList = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v) =>
[(k, v)] -> Map karr varr k v
I.fromList
fromListN :: (Prim k, Ord k, PrimUnlifted v)
=> Int
-> [(k,v)]
-> Map k v
fromListN :: forall k v.
(Prim k, Ord k, PrimUnlifted v) =>
Int -> [(k, v)] -> Map k v
fromListN Int
n = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v) =>
Int -> [(k, v)] -> Map karr varr k v
I.fromListN Int
n
fromListAppend :: (Prim k, Ord k, PrimUnlifted v, Semigroup v) => [(k,v)] -> Map k v
fromListAppend :: forall k v.
(Prim k, Ord k, PrimUnlifted v, Semigroup v) =>
[(k, v)] -> Map k v
fromListAppend = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v, Semigroup v) =>
[(k, v)] -> Map karr varr k v
I.fromListAppend
fromListAppendN :: (Prim k, Ord k, PrimUnlifted v, Semigroup v)
=> Int
-> [(k,v)]
-> Map k v
fromListAppendN :: forall k v.
(Prim k, Ord k, PrimUnlifted v, Semigroup v) =>
Int -> [(k, v)] -> Map k v
fromListAppendN Int
n = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v, Semigroup v) =>
Int -> [(k, v)] -> Map karr varr k v
I.fromListAppendN Int
n
fromSet :: (Prim k, PrimUnlifted v)
=> (k -> v)
-> Set k
-> Map k v
{-# INLINE fromSet #-}
fromSet :: forall k v.
(Prim k, PrimUnlifted v) =>
(k -> v) -> Set k -> Map k v
fromSet k -> v
f (Set Set PrimArray k
s) = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (karr :: * -> *) k (varr :: * -> *) v.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
(k -> v) -> Set karr k -> Map karr varr k v
I.fromSet k -> v
f Set PrimArray k
s)
fromSetP :: (PrimMonad m, Prim k, PrimUnlifted v)
=> (k -> m v)
-> Set k
-> m (Map k v)
{-# INLINE fromSetP #-}
fromSetP :: forall (m :: * -> *) k v.
(PrimMonad m, Prim k, PrimUnlifted v) =>
(k -> m v) -> Set k -> m (Map k v)
fromSetP k -> m v
f (Set Set PrimArray k
s) = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (m :: * -> *) (karr :: * -> *) k (varr :: * -> *) v.
(PrimMonad m, ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
(k -> m v) -> Set karr k -> m (Map karr varr k v)
I.fromSetP k -> m v
f Set PrimArray k
s)
size :: PrimUnlifted v => Map k v -> Int
size :: forall v k. PrimUnlifted v => Map k v -> Int
size (Map Map PrimArray UnliftedArray k v
m) = forall (varr :: * -> *) v (karr :: * -> *) k.
(ContiguousU varr, Element varr v) =>
Map karr varr k v -> Int
I.size Map PrimArray UnliftedArray k v
m
map :: (Prim k, PrimUnlifted v, PrimUnlifted w)
=> (v -> w)
-> Map k v
-> Map k w
map :: forall k v w.
(Prim k, PrimUnlifted v, PrimUnlifted w) =>
(v -> w) -> Map k v -> Map k w
map v -> w
f (Map Map PrimArray UnliftedArray k v
m) = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (varr :: * -> *) (warr :: * -> *) v w (karr :: * -> *) k.
(ContiguousU varr, ContiguousU warr, Element varr v,
Element warr w) =>
(v -> w) -> Map karr varr k v -> Map karr warr k w
I.map v -> w
f Map PrimArray UnliftedArray k v
m)
mapLifted :: (Prim k, PrimUnlifted v)
=> (v -> w)
-> Map k v
-> MUL.Map k w
mapLifted :: forall k v w.
(Prim k, PrimUnlifted v) =>
(v -> w) -> Map k v -> Map k w
mapLifted v -> w
f (Map Map PrimArray UnliftedArray k v
m) = forall k v. Map PrimArray Array k v -> Map k v
MUL.Map (forall (varr :: * -> *) (warr :: * -> *) v w (karr :: * -> *) k.
(ContiguousU varr, ContiguousU warr, Element varr v,
Element warr w) =>
(v -> w) -> Map karr varr k v -> Map karr warr k w
I.map v -> w
f Map PrimArray UnliftedArray k v
m)
mapMaybe :: (Prim k, PrimUnlifted v, PrimUnlifted w)
=> (v -> Maybe w)
-> Map k v
-> Map k w
{-# INLINE mapMaybe #-}
mapMaybe :: forall k v w.
(Prim k, PrimUnlifted v, PrimUnlifted w) =>
(v -> Maybe w) -> Map k v -> Map k w
mapMaybe v -> Maybe w
f (Map Map PrimArray UnliftedArray k v
m) = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (karr :: * -> *) (varr :: * -> *) k v w.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Element varr w) =>
(v -> Maybe w) -> Map karr varr k v -> Map karr varr k w
I.mapMaybe v -> Maybe w
f Map PrimArray UnliftedArray k v
m)
mapMaybeP :: (PrimMonad m, Prim k, PrimUnlifted v, PrimUnlifted w)
=> (v -> m (Maybe w))
-> Map k v
-> m (Map k w)
{-# INLINE mapMaybeP #-}
mapMaybeP :: forall (m :: * -> *) k v w.
(PrimMonad m, Prim k, PrimUnlifted v, PrimUnlifted w) =>
(v -> m (Maybe w)) -> Map k v -> m (Map k w)
mapMaybeP v -> m (Maybe w)
f (Map Map PrimArray UnliftedArray k v
m) = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (karr :: * -> *) (varr :: * -> *) (m :: * -> *) k v w.
(PrimMonad m, ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Element varr w) =>
(v -> m (Maybe w)) -> Map karr varr k v -> m (Map karr varr k w)
I.mapMaybeP v -> m (Maybe w)
f Map PrimArray UnliftedArray k v
m)
mapMaybeWithKey :: (Prim k, PrimUnlifted v, PrimUnlifted w)
=> (k -> v -> Maybe w)
-> Map k v
-> Map k w
mapMaybeWithKey :: forall k v w.
(Prim k, PrimUnlifted v, PrimUnlifted w) =>
(k -> v -> Maybe w) -> Map k v -> Map k w
mapMaybeWithKey k -> v -> Maybe w
f (Map Map PrimArray UnliftedArray k v
m) = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (karr :: * -> *) (varr :: * -> *) k v w.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Element varr w) =>
(k -> v -> Maybe w) -> Map karr varr k v -> Map karr varr k w
I.mapMaybeWithKey k -> v -> Maybe w
f Map PrimArray UnliftedArray k v
m)
adjustMany :: (Prim k, PrimUnlifted v, PrimMonad m, Ord k)
=> ((k -> (v -> m v) -> m ()) -> m a)
-> Map k v
-> m (Map k v, a)
adjustMany :: forall k v (m :: * -> *) a.
(Prim k, PrimUnlifted v, PrimMonad m, Ord k) =>
((k -> (v -> m v) -> m ()) -> m a) -> Map k v -> m (Map k v, a)
adjustMany (k -> (v -> m v) -> m ()) -> m a
f (Map Map PrimArray UnliftedArray k v
m) = do
(Map PrimArray UnliftedArray k v
r,a
a) <- forall (karr :: * -> *) (varr :: * -> *) (m :: * -> *) k v a.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, PrimMonad m, Ord k) =>
((k -> (v -> m v) -> m ()) -> m a)
-> Map karr varr k v -> m (Map karr varr k v, a)
I.adjustMany (k -> (v -> m v) -> m ()) -> m a
f Map PrimArray UnliftedArray k v
m
forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map Map PrimArray UnliftedArray k v
r, a
a)
foldlWithKeyM' :: (Monad m, Prim k, PrimUnlifted v)
=> (b -> k -> v -> m b)
-> b
-> Map k v
-> m b
foldlWithKeyM' :: forall (m :: * -> *) k v b.
(Monad m, Prim k, PrimUnlifted v) =>
(b -> k -> v -> m b) -> b -> Map k v -> m b
foldlWithKeyM' b -> k -> v -> m b
f b
b0 (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) (varr :: * -> *) k v (m :: * -> *) b.
(Monad m, ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
(b -> k -> v -> m b) -> b -> Map karr varr k v -> m b
I.foldlWithKeyM' b -> k -> v -> m b
f b
b0 Map PrimArray UnliftedArray k v
m
foldrWithKeyM' :: (Monad m, Prim k, PrimUnlifted v)
=> (k -> v -> b -> m b)
-> b
-> Map k v
-> m b
foldrWithKeyM' :: forall (m :: * -> *) k v b.
(Monad m, Prim k, PrimUnlifted v) =>
(k -> v -> b -> m b) -> b -> Map k v -> m b
foldrWithKeyM' k -> v -> b -> m b
f b
b0 (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) (varr :: * -> *) k v (m :: * -> *) b.
(Monad m, ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
(k -> v -> b -> m b) -> b -> Map karr varr k v -> m b
I.foldrWithKeyM' k -> v -> b -> m b
f b
b0 Map PrimArray UnliftedArray k v
m
foldlMapWithKeyM' :: (Monad m, Monoid b, Prim k, PrimUnlifted v)
=> (k -> v -> m b)
-> Map k v
-> m b
foldlMapWithKeyM' :: forall (m :: * -> *) b k v.
(Monad m, Monoid b, Prim k, PrimUnlifted v) =>
(k -> v -> m b) -> Map k v -> m b
foldlMapWithKeyM' k -> v -> m b
f (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) (varr :: * -> *) k v (m :: * -> *) b.
(Monad m, ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Monoid b) =>
(k -> v -> m b) -> Map karr varr k v -> m b
I.foldlMapWithKeyM' k -> v -> m b
f Map PrimArray UnliftedArray k v
m
foldrMapWithKeyM' :: (Monad m, Monoid b, Prim k, PrimUnlifted v)
=> (k -> v -> m b)
-> Map k v
-> m b
foldrMapWithKeyM' :: forall (m :: * -> *) b k v.
(Monad m, Monoid b, Prim k, PrimUnlifted v) =>
(k -> v -> m b) -> Map k v -> m b
foldrMapWithKeyM' k -> v -> m b
f (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) (varr :: * -> *) k v (m :: * -> *) b.
(Monad m, ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Monoid b) =>
(k -> v -> m b) -> Map karr varr k v -> m b
I.foldrMapWithKeyM' k -> v -> m b
f Map PrimArray UnliftedArray k v
m
traverse :: (Applicative m, Prim k, PrimUnlifted v, PrimUnlifted b)
=> (v -> m b)
-> Map k v
-> m (Map k b)
traverse :: forall (m :: * -> *) k v b.
(Applicative m, Prim k, PrimUnlifted v, PrimUnlifted b) =>
(v -> m b) -> Map k v -> m (Map k b)
traverse v -> m b
f (Map Map PrimArray UnliftedArray k v
m) = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (forall (m :: * -> *) (karr :: * -> *) k (varr :: * -> *) v w.
(Applicative m, ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Element varr w) =>
(v -> m w) -> Map karr varr k v -> m (Map karr varr k w)
I.traverse v -> m b
f Map PrimArray UnliftedArray k v
m)
traverseWithKey :: (Applicative f, Prim k, PrimUnlifted v, PrimUnlifted b)
=> (k -> v -> f b)
-> Map k v
-> f (Map k b)
traverseWithKey :: forall (f :: * -> *) k v b.
(Applicative f, Prim k, PrimUnlifted v, PrimUnlifted b) =>
(k -> v -> f b) -> Map k v -> f (Map k b)
traverseWithKey k -> v -> f b
f (Map Map PrimArray UnliftedArray k v
m) = forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (karr :: * -> *) k (varr :: * -> *) v v' (f :: * -> *).
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Element varr v', Applicative f) =>
(k -> v -> f v') -> Map karr varr k v -> f (Map karr varr k v')
I.traverseWithKey k -> v -> f b
f Map PrimArray UnliftedArray k v
m
traverseWithKey_ :: (Monad m, Prim k, PrimUnlifted v)
=> (k -> v -> m b)
-> Map k v
-> m ()
traverseWithKey_ :: forall (m :: * -> *) k v b.
(Monad m, Prim k, PrimUnlifted v) =>
(k -> v -> m b) -> Map k v -> m ()
traverseWithKey_ k -> v -> m b
f (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) (varr :: * -> *) k v (m :: * -> *) b.
(Applicative m, ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
(k -> v -> m b) -> Map karr varr k v -> m ()
I.traverseWithKey_ k -> v -> m b
f Map PrimArray UnliftedArray k v
m
foldMapWithKey :: (Monoid b, Prim k, PrimUnlifted v)
=> (k -> v -> b)
-> Map k v
-> b
foldMapWithKey :: forall b k v.
(Monoid b, Prim k, PrimUnlifted v) =>
(k -> v -> b) -> Map k v -> b
foldMapWithKey k -> v -> b
f (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) k (varr :: * -> *) v m.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Monoid m) =>
(k -> v -> m) -> Map karr varr k v -> m
I.foldMapWithKey k -> v -> b
f Map PrimArray UnliftedArray k v
m
foldMapWithKey' :: (Monoid b, Prim k, PrimUnlifted v)
=> (k -> v -> b)
-> Map k v
-> b
foldMapWithKey' :: forall b k v.
(Monoid b, Prim k, PrimUnlifted v) =>
(k -> v -> b) -> Map k v -> b
foldMapWithKey' k -> v -> b
f (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) (varr :: * -> *) k v m.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v, Monoid m) =>
(k -> v -> m) -> Map karr varr k v -> m
I.foldMapWithKey' k -> v -> b
f Map PrimArray UnliftedArray k v
m
foldlWithKey' :: (Prim k, PrimUnlifted v)
=> (b -> k -> v -> b)
-> b
-> Map k v
-> b
foldlWithKey' :: forall k v b.
(Prim k, PrimUnlifted v) =>
(b -> k -> v -> b) -> b -> Map k v -> b
foldlWithKey' b -> k -> v -> b
f b
b0 (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) (varr :: * -> *) k v b.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
(b -> k -> v -> b) -> b -> Map karr varr k v -> b
I.foldlWithKey' b -> k -> v -> b
f b
b0 Map PrimArray UnliftedArray k v
m
foldrWithKey' :: (Prim k, PrimUnlifted v)
=> (k -> v -> b -> b)
-> b
-> Map k v
-> b
foldrWithKey' :: forall k v b.
(Prim k, PrimUnlifted v) =>
(k -> v -> b -> b) -> b -> Map k v -> b
foldrWithKey' k -> v -> b -> b
f b
b0 (Map Map PrimArray UnliftedArray k v
m) = forall (karr :: * -> *) (varr :: * -> *) k v b.
(ContiguousU karr, Element karr k, ContiguousU varr,
Element varr v) =>
(k -> v -> b -> b) -> b -> Map karr varr k v -> b
I.foldrWithKey' k -> v -> b -> b
f b
b0 Map PrimArray UnliftedArray k v
m
unsafeFreezeZip :: (Ord k, Prim k, PrimUnlifted v)
=> MutablePrimArray s k
-> MutableUnliftedArray s v
-> ST s (Map k v)
unsafeFreezeZip :: forall k v s.
(Ord k, Prim k, PrimUnlifted v) =>
MutablePrimArray s k -> MutableUnliftedArray s v -> ST s (Map k v)
unsafeFreezeZip MutablePrimArray s k
keys MutableUnliftedArray s v
vals = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall k v. Map PrimArray UnliftedArray k v -> Map k v
Map (forall (karr :: * -> *) k (varr :: * -> *) v s.
(ContiguousU karr, Element karr k, Ord k, ContiguousU varr,
Element varr v) =>
Mutable karr s k -> Mutable varr s v -> ST s (Map karr varr k v)
I.unsafeFreezeZip MutablePrimArray s k
keys MutableUnliftedArray s v
vals)