-- | /Unlifted/ arrays, containing strictly evaluated pointers. -- Unlike "Array.Byte", these store pointers, but like it, they're guarenteed not to be bottom. -- Eg. We cannot store an 'Addr', because it might be null, but we can store "Array.Byte.Array", -- and more "Array.Array" module Array.Array where type A = ArrayArray# type M = MutableArrayArray# new :: I64 -> ST s (M s) new = newArrayArray# eq :: M s -> M s -> B eq = sameMutableArrayArray# freeze## :: M s -> ST s A freeze## = unsafeFreezeArrayArray# size :: A -> I64 size = sizeofArrayArray# sizeM :: M s -> I64 sizeM = sizeofMutableArrayArray# copy# :: A -> I64 -> M s -> I64 -> I64 -> ST_ s copy# = copyArrayArray# copyM# :: M s -> I64 -> M s -> I64 -> I64 -> ST_ s copyM# = copyMutableArrayArray#