From 0748dbc20e97b65b870936327c5db65b70646d0f Mon Sep 17 00:00:00 2001 From: Andrew Martin Date: Thu, 19 Apr 2018 10:17:38 -0400 Subject: [PATCH 1/2] rename unsafe traversals --- Data/Primitive/Array.hs | 12 ++++++------ Data/Primitive/SmallArray.hs | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Data/Primitive/Array.hs b/Data/Primitive/Array.hs index f35d2236..0c6ada46 100644 --- a/Data/Primitive/Array.hs +++ b/Data/Primitive/Array.hs @@ -23,7 +23,7 @@ module Data.Primitive.Array ( cloneArray, cloneMutableArray, sizeofArray, sizeofMutableArray, fromListN, fromList, - unsafeTraverseArray + traverseArrayP ) where import Control.Monad.Primitive @@ -520,9 +520,9 @@ traverseArray f = \ !ary -> {-# RULES "traverse/ST" forall (f :: a -> ST s b). traverseArray f = - unsafeTraverseArray f + traverseArrayP f "traverse/IO" forall (f :: a -> IO b). traverseArray f = - unsafeTraverseArray f + traverseArrayP f #-} #if MIN_VERSION_base(4,8,0) {-# RULES @@ -537,12 +537,12 @@ traverseArray f = \ !ary -> -- "affine" 'PrimMonad' instance. In particular, it must only produce -- *one* result array. 'Control.Monad.Trans.List.ListT'-transformed -- monads, for example, will not work right at all. -unsafeTraverseArray +traverseArrayP :: PrimMonad m => (a -> m b) -> Array a -> m (Array b) -unsafeTraverseArray f = \ !ary -> +traverseArrayP f = \ !ary -> let !sz = sizeofArray ary go !i !mary @@ -557,7 +557,7 @@ unsafeTraverseArray f = \ !ary -> in do mary <- newArray sz badTraverseValue go 0 mary -{-# INLINE unsafeTraverseArray #-} +{-# INLINE traverseArrayP #-} arrayFromListN :: Int -> [a] -> Array a arrayFromListN n l = diff --git a/Data/Primitive/SmallArray.hs b/Data/Primitive/SmallArray.hs index b0cd77e0..1983976b 100644 --- a/Data/Primitive/SmallArray.hs +++ b/Data/Primitive/SmallArray.hs @@ -57,7 +57,7 @@ module Data.Primitive.SmallArray , sizeofSmallMutableArray , smallArrayFromList , smallArrayFromListN - , unsafeTraverseSmallArray + , traverseSmallArrayP ) where @@ -410,13 +410,13 @@ sizeofSmallMutableArray (SmallMutableArray ma) = sizeofMutableArray ma -- "affine" 'PrimMonad' instance. In particular, it must only produce -- *one* result array. 'Control.Monad.Trans.List.ListT'-transformed -- monads, for example, will not work right at all. -unsafeTraverseSmallArray +traverseSmallArrayP :: PrimMonad m => (a -> m b) -> SmallArray a -> m (SmallArray b) #if HAVE_SMALL_ARRAY -unsafeTraverseSmallArray f = \ !ary -> +traverseSmallArrayP f = \ !ary -> let !sz = sizeofSmallArray ary go !i !mary @@ -432,9 +432,9 @@ unsafeTraverseSmallArray f = \ !ary -> mary <- newSmallArray sz badTraverseValue go 0 mary #else -unsafeTraverseSmallArray f (SmallArray ar) = SmallArray `liftM` unsafeTraverseArray f ar +traverseSmallArrayP f (SmallArray ar) = SmallArray `liftM` unsafeTraverseArray f ar #endif -{-# INLINE unsafeTraverseSmallArray #-} +{-# INLINE traverseSmallArrayP #-} #ifndef HAVE_SMALL_ARRAY runSmallArray @@ -683,8 +683,8 @@ traverseSmallArray f = \ !ary -> {-# INLINE [1] traverseSmallArray #-} {-# RULES -"traverse/ST" forall (f :: a -> ST s b). traverseSmallArray f = unsafeTraverseSmallArray f -"traverse/IO" forall (f :: a -> IO b). traverseSmallArray f = unsafeTraverseSmallArray f +"traverse/ST" forall (f :: a -> ST s b). traverseSmallArray f = traverseSmallArrayP f +"traverse/IO" forall (f :: a -> IO b). traverseSmallArray f = traverseSmallArrayP f "traverse/Id" forall (f :: a -> Identity b). traverseSmallArray f = (coerce :: (SmallArray a -> SmallArray (Identity b)) -> SmallArray a -> Identity (SmallArray b)) (fmap f) From 50edd216f4cb947cc16f8a25f770691acc234bba Mon Sep 17 00:00:00 2001 From: Andrew Martin Date: Thu, 19 Apr 2018 11:50:54 -0400 Subject: [PATCH 2/2] rename last remaining vestige of unsafeTraverseArray --- Data/Primitive/SmallArray.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Data/Primitive/SmallArray.hs b/Data/Primitive/SmallArray.hs index 1983976b..17763940 100644 --- a/Data/Primitive/SmallArray.hs +++ b/Data/Primitive/SmallArray.hs @@ -432,7 +432,7 @@ traverseSmallArrayP f = \ !ary -> mary <- newSmallArray sz badTraverseValue go 0 mary #else -traverseSmallArrayP f (SmallArray ar) = SmallArray `liftM` unsafeTraverseArray f ar +traverseSmallArrayP f (SmallArray ar) = SmallArray `liftM` traverseArrayP f ar #endif {-# INLINE traverseSmallArrayP #-}