primdata 0.1.2.5 → 0.1.2.6
raw patch · 3 files changed
+29/−2 lines, 3 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Data.Array.FI: toList :: Flat a => Array a -> [a]
+ Data.Array.UI: (!#) :: Unlifted a => Array a -> Int# -> a
+ Data.Array.UI: foldr' :: Unlifted a => (a -> b -> b) -> b -> Array a -> b
+ Data.Array.UI: size# :: Array a -> Int#
+ Data.Array.UI: toList :: Unlifted a => Array a -> [a]
Files
- Data/Array/FI.hs +4/−0
- Data/Array/UI.hs +24/−1
- primdata.cabal +1/−1
Data/Array/FI.hs view
@@ -137,6 +137,10 @@ _ -> z {-# inline foldr' #-} +toList :: forall a. Flat a => Array a -> [a]+toList = foldr' (:) []+{-# inlinable toList #-}+ rfoldr :: forall a b. Flat a => (a -> b -> b) -> b -> Array a -> b rfoldr f = \z (Array arr) -> go (Data.Array.FI.size# @a arr -# 1#) z arr where go i z arr = case i >=# 0# of
Data/Array/UI.hs view
@@ -43,13 +43,22 @@ (# s, arr #) -> arr) {-# noinline empty #-} +infixl 7 !#+(!#) :: Unlifted a => Array a -> Int# -> a+(!#) (Array arr) i = from# (indexUnlifted# arr i)+{-# inline (!#) #-}+ infixl 7 ! (!) :: Unlifted a => Array a -> Int -> a (!) (Array arr) (I# i) = from# (indexUnlifted# arr i) {-# inline (!) #-} +size# :: Array a -> Int#+size# (Array arr) = sizeofArrayArray# arr+{-# inline size# #-}+ size :: Array a -> Int-size (Array arr) = I# (sizeofArrayArray# arr)+size arr = I# (size# arr) {-# inline size #-} -- | Create a new array from a slice of the input array.@@ -73,6 +82,16 @@ _ -> z {-# inline foldr #-} +foldr' :: forall a b. Unlifted a => (a -> b -> b) -> b -> Array a -> b+foldr' f z = \(Array arr) -> go 0# (sizeofArrayArray# arr) z arr where+ go :: Int# -> Int# -> b -> ArrayArray# -> b+ go i s z arr = case i <# s of+ 1# -> case indexUnlifted# arr i of+ a -> case from# a of+ !a -> f a $! go (i +# 1#) s z arr+ _ -> z+{-# inline foldr' #-}+ foldl' :: forall a b. Unlifted a => (b -> a -> b) -> b -> Array a -> b foldl' f z = \(Array arr) -> go 0# (sizeofArrayArray# arr) z arr where go i s z arr = case i <# s of@@ -91,6 +110,10 @@ go _ _ s = case unsafeFreezeArrayArray# marr s of (# _, arr #) -> arr) {-# inline fromList #-}++toList :: forall a. Unlifted a => Array a -> [a]+toList = foldr' (:) []+{-# inlinable toList #-} {-# inline forIx #-} forIx :: forall a. Unlifted a => Array a -> (Int -> a -> IO ()) -> IO ()
primdata.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: primdata-version: 0.1.2.5+version: 0.1.2.6 synopsis: Minimum-overhead primitive datatypes category: primitive author: András Kovács