{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -O2 -Wall #-}
module Data.Map.Unboxed.Unboxed
( Map
, empty
, singleton
, lookup
, size
, map
, mapMaybe
, mapMaybeWithKey
, adjustMany
, adjustManyInline
, foldlWithKey'
, foldrWithKey'
, foldMapWithKey'
, foldlWithKeyM'
, foldrWithKeyM'
, foldlMapWithKeyM'
, foldrMapWithKeyM'
, traverse
, traverseWithKey
, traverseWithKey_
, toList
, 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 (PrimArray,MutablePrimArray)
import Data.Primitive.Types (Prim)
import Data.Semigroup (Semigroup)
import Data.Set.Unboxed.Internal (Set(..))
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 PrimArray k v)
instance (Prim k, Ord k, Prim v, Semigroup v) => Semigroup (Map k v) where
Map Map PrimArray PrimArray k v
x <> :: Map k v -> Map k v -> Map k v
<> Map Map PrimArray PrimArray k v
y = forall k v. Map PrimArray PrimArray 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 PrimArray k v
x Map PrimArray PrimArray k v
y)
instance (Prim k, Ord k, Prim v, Semigroup v) => Monoid (Map k v) where
mempty :: Map k v
mempty = forall k v. Map PrimArray PrimArray 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 PrimArray 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, Prim v, Eq v) => Eq (Map k v) where
Map Map PrimArray PrimArray k v
x == :: Map k v -> Map k v -> Bool
== Map Map PrimArray PrimArray 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 PrimArray k v
x Map PrimArray PrimArray k v
y
instance (Prim k, Ord k, Prim v, Ord v) => Ord (Map k v) where
compare :: Map k v -> Map k v -> Ordering
compare (Map Map PrimArray PrimArray k v
x) (Map Map PrimArray PrimArray 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 PrimArray k v
x Map PrimArray PrimArray k v
y
instance (Prim k, Ord k, Prim 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 PrimArray 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 PrimArray 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 PrimArray 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 PrimArray k v
s
instance (Prim k, Show k, Prim v, Show v) => Show (Map k v) where
showsPrec :: Int -> Map k v -> ShowS
showsPrec Int
p (Map Map PrimArray PrimArray 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 PrimArray k v
s
lookup :: (Prim k, Ord k, Prim v) => k -> Map k v -> Maybe v
lookup :: forall k v. (Prim k, Ord k, Prim v) => k -> Map k v -> Maybe v
lookup k
a (Map Map PrimArray PrimArray 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 PrimArray k v
s
empty :: Map k v
empty :: forall k v. Map k v
empty = forall k v. Map PrimArray PrimArray k v -> Map k v
Map forall (karr :: * -> *) (varr :: * -> *) k v.
(ContiguousU karr, ContiguousU varr) =>
Map karr varr k v
I.empty
singleton :: (Prim k, Prim v) => k -> v -> Map k v
singleton :: forall k v. (Prim k, Prim v) => k -> v -> Map k v
singleton k
k v
v = forall k v. Map PrimArray PrimArray 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)
toList :: (Prim k, Ord k, Prim v) => Map k v -> [(k,v)]
toList :: forall k v. (Prim k, Ord k, Prim v) => Map k v -> [(k, v)]
toList (Map Map PrimArray PrimArray k v
m) = 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 PrimArray k v
m
fromList :: (Prim k, Ord k, Prim v) => [(k,v)] -> Map k v
fromList :: forall k v. (Prim k, Ord k, Prim v) => [(k, v)] -> Map k v
fromList = forall k v. Map PrimArray PrimArray 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, Prim v)
=> Int
-> [(k,v)]
-> Map k v
fromListN :: forall k v. (Prim k, Ord k, Prim v) => Int -> [(k, v)] -> Map k v
fromListN Int
n = forall k v. Map PrimArray PrimArray 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, Prim v, Semigroup v) => [(k,v)] -> Map k v
fromListAppend :: forall k v.
(Prim k, Ord k, Prim v, Semigroup v) =>
[(k, v)] -> Map k v
fromListAppend = forall k v. Map PrimArray PrimArray 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, Prim v, Semigroup v)
=> Int
-> [(k,v)]
-> Map k v
fromListAppendN :: forall k v.
(Prim k, Ord k, Prim v, Semigroup v) =>
Int -> [(k, v)] -> Map k v
fromListAppendN Int
n = forall k v. Map PrimArray PrimArray 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, Prim v)
=> (k -> v)
-> Set k
-> Map k v
fromSet :: forall k v. (Prim k, Prim v) => (k -> v) -> Set k -> Map k v
fromSet k -> v
f (Set Set PrimArray k
s) = forall k v. Map PrimArray PrimArray 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, Prim v)
=> (k -> m v)
-> Set k
-> m (Map k v)
fromSetP :: forall (m :: * -> *) k v.
(PrimMonad m, Prim k, Prim 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 PrimArray 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 :: Prim v => Map k v -> Int
size :: forall v k. Prim v => Map k v -> Int
size (Map Map PrimArray PrimArray k v
m) = forall (varr :: * -> *) v (karr :: * -> *) k.
(ContiguousU varr, Element varr v) =>
Map karr varr k v -> Int
I.size Map PrimArray PrimArray k v
m
map :: (Prim k, Prim v, Prim w)
=> (v -> w)
-> Map k v
-> Map k w
map :: forall k v w.
(Prim k, Prim v, Prim w) =>
(v -> w) -> Map k v -> Map k w
map v -> w
f (Map Map PrimArray PrimArray k v
m) = forall k v. Map PrimArray PrimArray 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 PrimArray k v
m)
mapMaybe :: (Prim k, Prim v, Prim w)
=> (v -> Maybe w)
-> Map k v
-> Map k w
mapMaybe :: forall k v w.
(Prim k, Prim v, Prim w) =>
(v -> Maybe w) -> Map k v -> Map k w
mapMaybe v -> Maybe w
f (Map Map PrimArray PrimArray k v
m) = forall k v. Map PrimArray PrimArray 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 PrimArray k v
m)
mapMaybeWithKey :: (Prim k, Prim v, Prim w)
=> (k -> v -> Maybe w)
-> Map k v
-> Map k w
mapMaybeWithKey :: forall k v w.
(Prim k, Prim v, Prim w) =>
(k -> v -> Maybe w) -> Map k v -> Map k w
mapMaybeWithKey k -> v -> Maybe w
f (Map Map PrimArray PrimArray k v
m) = forall k v. Map PrimArray PrimArray 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 PrimArray k v
m)
adjustMany :: (Prim k, Prim v, PrimMonad m, Ord k)
=> ((k -> (v -> m v) -> m ()) -> m a)
-> Map k v
-> m (Map k v, a)
{-# INLINABLE adjustMany #-}
adjustMany :: forall k v (m :: * -> *) a.
(Prim k, Prim 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 PrimArray k v
m) = do
(Map PrimArray PrimArray 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 PrimArray k v
m
forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall k v. Map PrimArray PrimArray k v -> Map k v
Map Map PrimArray PrimArray k v
r, a
a)
adjustManyInline :: (Prim k, Prim v, PrimMonad m, Ord k)
=> ((k -> (v -> m v) -> m ()) -> m a)
-> Map k v
-> m (Map k v, a)
{-# INLINE adjustManyInline #-}
adjustManyInline :: forall k v (m :: * -> *) a.
(Prim k, Prim v, PrimMonad m, Ord k) =>
((k -> (v -> m v) -> m ()) -> m a) -> Map k v -> m (Map k v, a)
adjustManyInline (k -> (v -> m v) -> m ()) -> m a
f (Map Map PrimArray PrimArray k v
m) = do
(Map PrimArray PrimArray 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.adjustManyInline (k -> (v -> m v) -> m ()) -> m a
f Map PrimArray PrimArray k v
m
forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall k v. Map PrimArray PrimArray k v -> Map k v
Map Map PrimArray PrimArray k v
r, a
a)
foldlWithKeyM' :: (Monad m, Prim k, Prim v)
=> (b -> k -> v -> m b)
-> b
-> Map k v
-> m b
foldlWithKeyM' :: forall (m :: * -> *) k v b.
(Monad m, Prim k, Prim v) =>
(b -> k -> v -> m b) -> b -> Map k v -> m b
foldlWithKeyM' b -> k -> v -> m b
f b
b0 (Map Map PrimArray PrimArray 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 PrimArray k v
m
foldrWithKeyM' :: (Monad m, Prim k, Prim v)
=> (k -> v -> b -> m b)
-> b
-> Map k v
-> m b
foldrWithKeyM' :: forall (m :: * -> *) k v b.
(Monad m, Prim k, Prim v) =>
(k -> v -> b -> m b) -> b -> Map k v -> m b
foldrWithKeyM' k -> v -> b -> m b
f b
b0 (Map Map PrimArray PrimArray 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 PrimArray k v
m
foldlMapWithKeyM' :: (Monad m, Monoid b, Prim k, Prim v)
=> (k -> v -> m b)
-> Map k v
-> m b
foldlMapWithKeyM' :: forall (m :: * -> *) b k v.
(Monad m, Monoid b, Prim k, Prim v) =>
(k -> v -> m b) -> Map k v -> m b
foldlMapWithKeyM' k -> v -> m b
f (Map Map PrimArray PrimArray 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 PrimArray k v
m
foldrMapWithKeyM' :: (Monad m, Monoid b, Prim k, Prim v)
=> (k -> v -> m b)
-> Map k v
-> m b
foldrMapWithKeyM' :: forall (m :: * -> *) b k v.
(Monad m, Monoid b, Prim k, Prim v) =>
(k -> v -> m b) -> Map k v -> m b
foldrMapWithKeyM' k -> v -> m b
f (Map Map PrimArray PrimArray 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 PrimArray k v
m
traverse :: (Applicative f, Prim k, Prim v, Prim b)
=> (v -> f b)
-> Map k v
-> f (Map k b)
traverse :: forall (f :: * -> *) k v b.
(Applicative f, Prim k, Prim v, Prim b) =>
(v -> f b) -> Map k v -> f (Map k b)
traverse v -> f b
f (Map Map PrimArray PrimArray k v
m) = forall k v. Map PrimArray PrimArray 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 -> f b
f Map PrimArray PrimArray k v
m
traverseWithKey :: (Applicative f, Prim k, Prim v, Prim b)
=> (k -> v -> f b)
-> Map k v
-> f (Map k b)
traverseWithKey :: forall (f :: * -> *) k v b.
(Applicative f, Prim k, Prim v, Prim b) =>
(k -> v -> f b) -> Map k v -> f (Map k b)
traverseWithKey k -> v -> f b
f (Map Map PrimArray PrimArray k v
m) = forall k v. Map PrimArray PrimArray 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 PrimArray k v
m
traverseWithKey_ :: (Monad m, Prim k, Prim v)
=> (k -> v -> m b)
-> Map k v
-> m ()
traverseWithKey_ :: forall (m :: * -> *) k v b.
(Monad m, Prim k, Prim v) =>
(k -> v -> m b) -> Map k v -> m ()
traverseWithKey_ k -> v -> m b
f (Map Map PrimArray PrimArray 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 PrimArray k v
m
foldMapWithKey' :: (Monoid b, Prim k, Prim v)
=> (k -> v -> b)
-> Map k v
-> b
foldMapWithKey' :: forall b k v.
(Monoid b, Prim k, Prim v) =>
(k -> v -> b) -> Map k v -> b
foldMapWithKey' k -> v -> b
f (Map Map PrimArray PrimArray 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 PrimArray k v
m
foldlWithKey' :: (Prim k, Prim v)
=> (b -> k -> v -> b)
-> b
-> Map k v
-> b
foldlWithKey' :: forall k v b.
(Prim k, Prim v) =>
(b -> k -> v -> b) -> b -> Map k v -> b
foldlWithKey' b -> k -> v -> b
f b
b0 (Map Map PrimArray PrimArray 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 PrimArray k v
m
foldrWithKey' :: (Prim k, Prim v)
=> (k -> v -> b -> b)
-> b
-> Map k v
-> b
foldrWithKey' :: forall k v b.
(Prim k, Prim v) =>
(k -> v -> b -> b) -> b -> Map k v -> b
foldrWithKey' k -> v -> b -> b
f b
b0 (Map Map PrimArray PrimArray 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 PrimArray k v
m
unsafeFreezeZip :: (Ord k, Prim k, Prim v)
=> MutablePrimArray s k
-> MutablePrimArray s v
-> ST s (Map k v)
unsafeFreezeZip :: forall k v s.
(Ord k, Prim k, Prim v) =>
MutablePrimArray s k -> MutablePrimArray s v -> ST s (Map k v)
unsafeFreezeZip MutablePrimArray s k
keys MutablePrimArray s v
vals = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall k v. Map PrimArray PrimArray 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 MutablePrimArray s v
vals)