@@ -45,15 +45,13 @@ module Streamly.Internal.Data.Array.Type
46 -- *** Stream Folds
46 -- *** Stream Folds
47 , unsafeMakePure
47 , unsafeMakePure
48− , writeWith
48+ , createOf
49− , writeN
49+ , pinnedCreateOf
50− , pinnedWriteN
50+ , unsafeCreateOf
51− , writeNUnsafe
51+ , unsafePinnedCreateOf
52− , pinnedWriteNUnsafe
52+ , create
53− -- , MA.ArrayUnsafe (..)
53+ , pinnedCreate
54− , pinnedWriteNAligned
54+ , createWith
58 -- *** From containers
56 -- *** From containers
59 , fromListN
57 , fromListN
@@ -75,8 +73,8 @@ module Streamly.Internal.Data.Array.Type
75 -- ** Reading
73 -- ** Reading
77 -- *** Indexing
75 -- *** Indexing
78− , unsafeIndexIO -- XXX rename to getIndexUnsafeIO
76+ , unsafeIndexIO -- XXX unsafeGetIndexIO
79− , getIndexUnsafe
77+ , getIndexUnsafe -- XXX unsafeGetIndex
81 -- *** To Streams
79 -- *** To Streams
@@ -143,6 +141,14 @@ module Streamly.Internal.Data.Array.Type
143 , toStream
141 , toStream
144 , toStreamRev
142 , toStreamRev
148+ , pinnedWriteNUnsafe
149+ , pinnedWriteNAligned
@@ -745,17 +751,28 @@ toList s = build (\c n -> toListFB c n s)
746-------------------------------------------------------------------------------
752-------------------------------------------------------------------------------
748−-- | @writeN n@ folds a maximum of @n@ elements from the input stream to an
754+-- | @createOf n@ folds a maximum of @n@ elements from the input stream to an
749-- 'Array'.
755-- 'Array'.
751−{-# INLINE_NORMAL writeN #-}
757+{-# INLINE_NORMAL createOf #-}
758+createOf :: forall m a. (MonadIO m, Unbox a) => Int -> Fold m a (Array a)
759+createOf = fmap unsafeFreeze . MA.createOf
761+-- XXX Deprecate in major
762+-- {-# DEPRECATED writeN "Please use createOf instead." #-}
763+{-# INLINE writeN #-}
752writeN :: forall m a. (MonadIO m, Unbox a) => Int -> Fold m a (Array a)
764writeN :: forall m a. (MonadIO m, Unbox a) => Int -> Fold m a (Array a)
753−writeN = fmap unsafeFreeze . MA.writeN
765+writeN = createOf
755−-- | Like 'fromListN' but creates a pinned array.
767+-- | Like 'createOf' but creates a pinned array.
768+{-# INLINE_NORMAL pinnedCreateOf #-}
769+pinnedCreateOf :: forall m a. (MonadIO m, Unbox a) => Int -> Fold m a (Array a)
770+pinnedCreateOf = fmap unsafeFreeze . MA.pinnedCreateOf
772+{-# DEPRECATED pinnedWriteN "Please use pinnedCreateOf instead." #-}
756−{-# INLINE_NORMAL pinnedWriteN #-}
773+{-# INLINE pinnedWriteN #-}
757pinnedWriteN :: forall m a. (MonadIO m, Unbox a) => Int -> Fold m a (Array a)
774pinnedWriteN :: forall m a. (MonadIO m, Unbox a) => Int -> Fold m a (Array a)
758−pinnedWriteN = fmap unsafeFreeze . MA.pinnedCreateOf
775+pinnedWriteN = pinnedCreateOf
760-- | @pinnedWriteNAligned alignment n@ folds a maximum of @n@ elements from the input
777-- | @pinnedWriteNAligned alignment n@ folds a maximum of @n@ elements from the input
761-- stream to an 'Array' aligned to the given size.
778-- stream to an 'Array' aligned to the given size.
@@ -763,44 +780,74 @@ pinnedWriteN = fmap unsafeFreeze . MA.pinnedCreateOf
763-- /Pre-release/
780-- /Pre-release/
765{-# INLINE_NORMAL pinnedWriteNAligned #-}
782{-# INLINE_NORMAL pinnedWriteNAligned #-}
783+{-# DEPRECATED pinnedWriteNAligned "To be removed." #-}
766pinnedWriteNAligned :: forall m a. (MonadIO m, Unbox a)
784pinnedWriteNAligned :: forall m a. (MonadIO m, Unbox a)
767 => Int -> Int -> Fold m a (Array a)
785 => Int -> Int -> Fold m a (Array a)
768pinnedWriteNAligned alignSize = fmap unsafeFreeze . MA.pinnedWriteNAligned alignSize
786pinnedWriteNAligned alignSize = fmap unsafeFreeze . MA.pinnedWriteNAligned alignSize
770−-- | Like 'writeN' but does not check the array bounds when writing. The fold
788+-- | Like 'createOf' but does not check the array bounds when writing. The fold
771-- driver must not call the step function more than 'n' times otherwise it will
789-- driver must not call the step function more than 'n' times otherwise it will
772-- corrupt the memory and crash. This function exists mainly because any
790-- corrupt the memory and crash. This function exists mainly because any
773-- conditional in the step function blocks fusion causing 10x performance
791-- conditional in the step function blocks fusion causing 10x performance
774-- slowdown.
792-- slowdown.
794+{-# INLINE_NORMAL unsafeCreateOf #-}
795+unsafeCreateOf :: forall m a. (MonadIO m, Unbox a)
796+ => Int -> Fold m a (Array a)
797+unsafeCreateOf n = unsafeFreeze <$> MA.unsafeCreateOf n
799+{-# DEPRECATED writeNUnsafe "Please use unsafeCreateOf instead." #-}
776−{-# INLINE_NORMAL writeNUnsafe #-}
800+{-# INLINE writeNUnsafe #-}
777writeNUnsafe :: forall m a. (MonadIO m, Unbox a)
801writeNUnsafe :: forall m a. (MonadIO m, Unbox a)
778 => Int -> Fold m a (Array a)
802 => Int -> Fold m a (Array a)
779−writeNUnsafe n = unsafeFreeze <$> MA.unsafeCreateOf n
803+writeNUnsafe = unsafeCreateOf
805+{-# INLINE_NORMAL unsafePinnedCreateOf #-}
806+unsafePinnedCreateOf :: forall m a. (MonadIO m, Unbox a)
807+ => Int -> Fold m a (Array a)
808+unsafePinnedCreateOf n = unsafeFreeze <$> MA.unsafePinnedCreateOf n
810+{-# DEPRECATED pinnedWriteNUnsafe "Please use unsafePinnedCreateOf instead." #-}
781−{-# INLINE_NORMAL pinnedWriteNUnsafe #-}
811+{-# INLINE pinnedWriteNUnsafe #-}
782pinnedWriteNUnsafe :: forall m a. (MonadIO m, Unbox a)
812pinnedWriteNUnsafe :: forall m a. (MonadIO m, Unbox a)
783 => Int -> Fold m a (Array a)
813 => Int -> Fold m a (Array a)
784−pinnedWriteNUnsafe n = unsafeFreeze <$> MA.unsafePinnedCreateOf n
814+pinnedWriteNUnsafe = unsafePinnedCreateOf
816+{-# INLINE_NORMAL createWith #-}
817+createWith :: forall m a. (MonadIO m, Unbox a)
818+ => Int -> Fold m a (Array a)
819+-- createWith n = FL.rmapM spliceArrays $ toArraysOf n
820+createWith elemCount = unsafeFreeze <$> MA.createWith elemCount
822+{-# DEPRECATED writeWith "Please use createWith instead." #-}
786−{-# INLINE_NORMAL writeWith #-}
823+{-# INLINE writeWith #-}
787writeWith :: forall m a. (MonadIO m, Unbox a)
824writeWith :: forall m a. (MonadIO m, Unbox a)
788 => Int -> Fold m a (Array a)
825 => Int -> Fold m a (Array a)
789−-- writeWith n = FL.rmapM spliceArrays $ toArraysOf n
790−writeWith elemCount = unsafeFreeze <$> MA.createWith elemCount
826+writeWith = createWith
792-- | Fold the whole input to a single array.
828-- | Fold the whole input to a single array.
794-- /Caution! Do not use this on infinite streams./
830-- /Caution! Do not use this on infinite streams./
832+{-# INLINE create #-}
833+create :: forall m a. (MonadIO m, Unbox a) => Fold m a (Array a)
834+create = fmap unsafeFreeze MA.create
836+-- XXX Deprecate in major
837+-- {-# DEPRECATED write "Please use create instead." #-}
796{-# INLINE write #-}
838{-# INLINE write #-}
797write :: forall m a. (MonadIO m, Unbox a) => Fold m a (Array a)
839write :: forall m a. (MonadIO m, Unbox a) => Fold m a (Array a)
842+-- | Like 'create' but creates a pinned array.
843+{-# INLINE pinnedCreate #-}
844+pinnedCreate :: forall m a. (MonadIO m, Unbox a) => Fold m a (Array a)
798−write = fmap unsafeFreeze MA.write
845+pinnedCreate = fmap unsafeFreeze MA.pinnedCreate
800−-- | Like 'write' but creates a pinned array.
847+{-# DEPRECATED pinnedWrite "Please use pinnedCreate instead." #-}
801{-# INLINE pinnedWrite #-}
848{-# INLINE pinnedWrite #-}
802pinnedWrite :: forall m a. (MonadIO m, Unbox a) => Fold m a (Array a)
849pinnedWrite :: forall m a. (MonadIO m, Unbox a) => Fold m a (Array a)
803−pinnedWrite = fmap unsafeFreeze MA.pinnedCreate
850+pinnedWrite = pinnedCreate
805-- | Fold "step" has a dependency on "initial", and each step is dependent on
852-- | Fold "step" has a dependency on "initial", and each step is dependent on
806-- the previous invocation of step due to state passing, finally extract
853-- the previous invocation of step due to state passing, finally extract