packages feed

array 0.3.0.1 → 0.3.0.2

raw patch · 2 files changed

+25/−38 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.Array.IO.Internals: IOArray :: STArray RealWorld i e -> IOArray i e
- Data.Array.IO.Internals: IOUArray :: (STUArray RealWorld i e) -> IOUArray i e
- Data.Array.IO.Internals: castIOUArray :: IOUArray ix a -> IO (IOUArray ix b)
- Data.Array.IO.Internals: instance Eq (IOUArray i e)
- Data.Array.IO.Internals: instance MArray IOUArray (FunPtr a) IO
- Data.Array.IO.Internals: instance MArray IOUArray (Ptr a) IO
- Data.Array.IO.Internals: instance MArray IOUArray (StablePtr a) IO
- Data.Array.IO.Internals: instance MArray IOUArray Bool IO
- Data.Array.IO.Internals: instance MArray IOUArray Char IO
- Data.Array.IO.Internals: instance MArray IOUArray Double IO
- Data.Array.IO.Internals: instance MArray IOUArray Float IO
- Data.Array.IO.Internals: instance MArray IOUArray Int IO
- Data.Array.IO.Internals: instance MArray IOUArray Int16 IO
- Data.Array.IO.Internals: instance MArray IOUArray Int32 IO
- Data.Array.IO.Internals: instance MArray IOUArray Int64 IO
- Data.Array.IO.Internals: instance MArray IOUArray Int8 IO
- Data.Array.IO.Internals: instance MArray IOUArray Word IO
- Data.Array.IO.Internals: instance MArray IOUArray Word16 IO
- Data.Array.IO.Internals: instance MArray IOUArray Word32 IO
- Data.Array.IO.Internals: instance MArray IOUArray Word64 IO
- Data.Array.IO.Internals: instance MArray IOUArray Word8 IO
- Data.Array.IO.Internals: instance Typeable2 IOUArray
- Data.Array.IO.Internals: newtype IOArray i e :: * -> * -> *
- Data.Array.IO.Internals: newtype IOUArray i e
- Data.Array.IO.Internals: unsafeThawIOUArray :: (Ix ix) => UArray ix e -> IO (IOUArray ix e)
- Data.Array.Storable: instance (Storable e) => MArray StorableArray e IO
+ Data.Array.Storable: instance Storable e => MArray StorableArray e IO
- Data.Array: (!) :: (Ix i) => Array i e -> i -> e
+ Data.Array: (!) :: Ix i => Array i e -> i -> e
- Data.Array: (//) :: (Ix i) => Array i e -> [(i, e)] -> Array i e
+ Data.Array: (//) :: Ix i => Array i e -> [(i, e)] -> Array i e
- Data.Array: accum :: (Ix i) => (e -> a -> e) -> Array i e -> [(i, a)] -> Array i e
+ Data.Array: accum :: Ix i => (e -> a -> e) -> Array i e -> [(i, a)] -> Array i e
- Data.Array: accumArray :: (Ix i) => (e -> a -> e) -> e -> (i, i) -> [(i, a)] -> Array i e
+ Data.Array: accumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(i, a)] -> Array i e
- Data.Array: array :: (Ix i) => (i, i) -> [(i, e)] -> Array i e
+ Data.Array: array :: Ix i => (i, i) -> [(i, e)] -> Array i e
- Data.Array: assocs :: (Ix i) => Array i e -> [(i, e)]
+ Data.Array: assocs :: Ix i => Array i e -> [(i, e)]
- Data.Array: bounds :: (Ix i) => Array i e -> (i, i)
+ Data.Array: bounds :: Ix i => Array i e -> (i, i)
- Data.Array: data (Ix i) => Array i e :: * -> * -> *
+ Data.Array: data Ix i => Array i e :: * -> * -> *
- Data.Array: elems :: (Ix i) => Array i e -> [e]
+ Data.Array: elems :: Ix i => Array i e -> [e]
- Data.Array: indices :: (Ix i) => Array i e -> [i]
+ Data.Array: indices :: Ix i => Array i e -> [i]
- Data.Array: listArray :: (Ix i) => (i, i) -> [e] -> Array i e
+ Data.Array: listArray :: Ix i => (i, i) -> [e] -> Array i e
- Data.Array.IArray: data (Ix i) => Array i e :: * -> * -> *
+ Data.Array.IArray: data Ix i => Array i e :: * -> * -> *
- Data.Array.MArray: class (Monad m) => MArray a e m
+ Data.Array.MArray: class Monad m => MArray a e m
- Data.Array.ST: runSTArray :: (Ix i) => (forall s. ST s (STArray s i e)) -> Array i e
+ Data.Array.ST: runSTArray :: Ix i => (forall s. ST s (STArray s i e)) -> Array i e
- Data.Array.ST: runSTUArray :: (Ix i) => (forall s. ST s (STUArray s i e)) -> UArray i e
+ Data.Array.ST: runSTUArray :: Ix i => (forall s. ST s (STUArray s i e)) -> UArray i e
- Data.Array.Storable: unsafeForeignPtrToStorableArray :: (Ix i) => ForeignPtr e -> (i, i) -> IO (StorableArray i e)
+ Data.Array.Storable: unsafeForeignPtrToStorableArray :: Ix i => ForeignPtr e -> (i, i) -> IO (StorableArray i e)

Files

Data/Array/Base.hs view
@@ -125,20 +125,18 @@ unsafeAccumST :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e -> [(Int, e')] -> ST s (STArray s i e) unsafeAccumST f arr ies = do     marr <- thaw arr-    sequence_ [do-        old <- unsafeRead marr i-        unsafeWrite marr i (f old new)-        | (i, new) <- ies]+    sequence_ [do old <- unsafeRead marr i+                  unsafeWrite marr i (f old new)+              | (i, new) <- ies]     return marr  {-# INLINE unsafeAccumArrayST #-} unsafeAccumArrayST :: Ix i => (e -> e' -> e) -> e -> (i,i) -> [(Int, e')] -> ST s (STArray s i e) unsafeAccumArrayST f e (l,u) ies = do     marr <- newArray (l,u) e-    sequence_ [do-        old <- unsafeRead marr i-        unsafeWrite marr i (f old new)-        | (i, new) <- ies]+    sequence_ [do old <- unsafeRead marr i+                  unsafeWrite marr i (f old new)+              | (i, new) <- ies]     return marr  @@ -476,10 +474,9 @@                   => (e -> e' -> e) -> UArray i e -> [(Int, e')] -> ST s (UArray i e) unsafeAccumUArray f arr ies = do     marr <- thawSTUArray arr-    sequence_ [do-        old <- unsafeRead marr i-        unsafeWrite marr i (f old new)-        | (i, new) <- ies]+    sequence_ [do old <- unsafeRead marr i+                  unsafeWrite marr i (f old new)+              | (i, new) <- ies]     unsafeFreezeSTUArray marr  {-# INLINE unsafeAccumArrayUArray #-}@@ -487,10 +484,9 @@                        => (e -> e' -> e) -> e -> (i,i) -> [(Int, e')] -> ST s (UArray i e) unsafeAccumArrayUArray f initialValue (l,u) ies = do     marr <- newArray (l,u) initialValue-    sequence_ [do-        old <- unsafeRead marr i-        unsafeWrite marr i (f old new)-        | (i, new) <- ies]+    sequence_ [do old <- unsafeRead marr i+                  unsafeWrite marr i (f old new)+              | (i, new) <- ies]     unsafeFreezeSTUArray marr  {-# INLINE eqUArray #-}@@ -963,11 +959,15 @@     unsafeRead  :: Ix i => a i e -> Int -> m e     unsafeWrite :: Ix i => a i e -> Int -> e -> m () -    {- INLINE newArray #-}+    {-# INLINE newArray #-} 	-- The INLINE is crucial, because until we know at least which monad 	 	-- we are in, the code below allocates like crazy.  So inline it, 	-- in the hope that the context will know the monad.-    newArray = newArrayImpl+    newArray (l,u) initialValue = do+        let n = safeRangeSize (l,u)+        marr <- unsafeNewArray_ (l,u)+        sequence_ [unsafeWrite marr i initialValue | i <- [0 .. n - 1]]+        return marr      {-# INLINE unsafeNewArray_ #-}     unsafeNewArray_ (l,u) = newArray (l,u) arrEleBottom@@ -990,17 +990,6 @@     -- default initialisation with undefined values if we *do* know the     -- initial value and it is constant for all elements. --- Workaround for performance bug #3586, GHC 6.12 only (not 6.13 and--- later, which fixed the underlying problem).-{-# INLINE newArrayImpl #-}-newArrayImpl :: (Ix i, MArray a e m) => (i, i) -> e -> m (a i e)-newArrayImpl (l,u) initialValue = do-        let n = safeRangeSize (l,u)-        marr <- unsafeNewArray_ (l,u)-        sequence_ [unsafeWrite marr i initialValue | i <- [0 .. n - 1]]-        return marr-- instance MArray IOArray e IO where #if defined(__HUGS__)     getBounds   = return . boundsIOArray@@ -1072,10 +1061,9 @@   (l,u) <- getBounds marr   n <- getNumElements marr   marr' <- newArray_ (l,u)-  sequence_ [do-        e <- unsafeRead marr i-        unsafeWrite marr' i (f e)-        | i <- [0 .. n - 1]]+  sequence_ [do e <- unsafeRead marr i+                unsafeWrite marr' i (f e)+            | i <- [0 .. n - 1]]   return marr'  {-# INLINE mapIndices #-}@@ -1085,10 +1073,9 @@ mapIndices (l',u') f marr = do     marr' <- newArray_ (l',u')     n' <- getNumElements marr'-    sequence_ [do-        e <- readArray marr (f i')-        unsafeWrite marr' (safeIndex (l',u') n' i') e-        | i' <- range (l',u')]+    sequence_ [do e <- readArray marr (f i')+                  unsafeWrite marr' (safeIndex (l',u') n' i') e+              | i' <- range (l',u')]     return marr'  -----------------------------------------------------------------------------
array.cabal view
@@ -1,5 +1,5 @@ name:       array-version:    0.3.0.1+version:    0.3.0.2 license:    BSD3 license-file:    LICENSE maintainer:    libraries@haskell.org