{-# language DataKinds #-}
{-# language MagicHash #-}
{-# language UnboxedTuples #-}
module Basics.ArrayArray
(
A
, M
, R
, A#
, M#
, lift
, unlift
, liftMutable
, unliftMutable
, unsafeFreeze#
) where
import GHC.Exts hiding (setByteArray#)
import Data.Bifunctor.Flip (Flip(Flip))
import Data.Primitive.Unlifted.Array (UnliftedArray(..),MutableUnliftedArray(..))
type A = UnliftedArray ()
type A# = ArrayArray#
type M = Flip MutableUnliftedArray ()
type M# = MutableArrayArray#
type R = 'BoxedRep 'Unlifted
lift :: A# -> A
{-# inline lift #-}
lift :: A# -> A
lift = forall a. A# -> UnliftedArray a
UnliftedArray
unlift :: A -> A#
{-# inline unlift #-}
unlift :: A -> A#
unlift (UnliftedArray A#
i) = A#
i
liftMutable :: M# s -> M s
{-# inline liftMutable #-}
liftMutable :: forall s. M# s -> M s
liftMutable M# s
x = forall {k} {k1} (p :: k -> k1 -> *) (a :: k1) (b :: k).
p b a -> Flip p a b
Flip (forall s a. MutableArrayArray# s -> MutableUnliftedArray s a
MutableUnliftedArray M# s
x)
unliftMutable :: M s -> M# s
{-# inline unliftMutable #-}
unliftMutable :: forall s. M s -> M# s
unliftMutable (Flip (MutableUnliftedArray MutableArrayArray# s
i)) = MutableArrayArray# s
i
unsafeFreeze# :: M# s -> State# s -> (# State# s, A# #)
{-# inline unsafeFreeze# #-}
unsafeFreeze# :: forall s. M# s -> State# s -> (# State# s, A# #)
unsafeFreeze# = forall s. M# s -> State# s -> (# State# s, A# #)
unsafeFreezeArrayArray#