contiguous-checked 0.2.0.0 → 0.3.0.0
raw patch · 2 files changed
+18/−10 lines, 2 filesdep ~contiguousPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: contiguous
API changes (from Hackage documentation)
- Data.Primitive.Contiguous: -> Type -> Type) | r -> arr;
- Data.Primitive.Contiguous: type family Element (arr :: Type -> Type) :: Type -> Constraint;
- Data.Primitive.Contiguous: }
+ Data.Primitive.Contiguous: foldMap :: (Contiguous arr, Element arr a, Monoid m) => a -> m -> arr a -> m
+ Data.Primitive.Contiguous: itraverse_ :: (Contiguous arr, Element arr a, Applicative f) => Int -> a -> f b -> arr a -> f ()
+ Data.Primitive.Contiguous: liftHashWithSalt :: (Contiguous arr, Element arr a) => Int -> a -> Int -> Int -> arr a -> Int
+ Data.Primitive.Contiguous: null :: Contiguous arr => arr b -> Bool
+ Data.Primitive.Contiguous: replicateM :: (Contiguous arr, PrimMonad m, Element arr b) => Int -> b -> m Mutable arr PrimState m b
+ Data.Primitive.Contiguous: rnf :: (Contiguous arr, NFData a, Element arr a) => arr a -> ()
+ Data.Primitive.Contiguous: same :: Contiguous arr => arr a -> arr a -> Bool
+ Data.Primitive.Contiguous: traverse_ :: (Contiguous arr, Element arr a, Applicative f) => a -> f b -> arr a -> f ()
- Data.Primitive.Contiguous: class Contiguous (arr :: Type -> Type) where {
+ Data.Primitive.Contiguous: class Contiguous (arr :: Type -> Type)
- Data.Primitive.Contiguous: cloneMutable :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> Int -> ST s (Mutable arr s b)
+ Data.Primitive.Contiguous: cloneMutable :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> Int -> m (Mutable arr (PrimState m) b)
- Data.Primitive.Contiguous: copy :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> arr b -> Int -> Int -> ST s ()
+ Data.Primitive.Contiguous: copy :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> arr b -> Int -> Int -> m ()
- Data.Primitive.Contiguous: copyMutable :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> Mutable arr s b -> Int -> Int -> ST s ()
+ Data.Primitive.Contiguous: copyMutable :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> Mutable arr (PrimState m) b -> Int -> Int -> m ()
- Data.Primitive.Contiguous: empty :: Contiguous arr => forall a. () => arr a
+ Data.Primitive.Contiguous: empty :: Contiguous arr => arr a
- Data.Primitive.Contiguous: equals :: Contiguous arr => forall b. (Element arr b, Eq b) => arr b -> arr b -> Bool
+ Data.Primitive.Contiguous: equals :: (Contiguous arr, Element arr b, Eq b) => arr b -> arr b -> Bool
- Data.Primitive.Contiguous: foldMap' :: (Contiguous arr, Element arr a, Monoid m) => (a -> m) -> arr a -> m
+ Data.Primitive.Contiguous: foldMap' :: (Contiguous arr, Element arr a, Monoid m) => a -> m -> arr a -> m
- Data.Primitive.Contiguous: foldl' :: (Contiguous arr, Element arr a) => (b -> a -> b) -> b -> arr a -> b
+ Data.Primitive.Contiguous: foldl' :: (Contiguous arr, Element arr a) => b -> a -> b -> b -> arr a -> b
- Data.Primitive.Contiguous: foldlM' :: (Contiguous arr, Element arr a, Monad m) => (b -> a -> m b) -> b -> arr a -> m b
+ Data.Primitive.Contiguous: foldlM' :: (Contiguous arr, Element arr a, Monad m) => b -> a -> m b -> b -> arr a -> m b
- Data.Primitive.Contiguous: foldr :: (Contiguous arr, Element arr a) => (a -> b -> b) -> b -> arr a -> b
+ Data.Primitive.Contiguous: foldr :: (Contiguous arr, Element arr a) => a -> b -> b -> b -> arr a -> b
- Data.Primitive.Contiguous: foldr' :: (Contiguous arr, Element arr a) => (a -> b -> b) -> b -> arr a -> b
+ Data.Primitive.Contiguous: foldr' :: (Contiguous arr, Element arr a) => a -> b -> b -> b -> arr a -> b
- Data.Primitive.Contiguous: lift :: Contiguous arr => forall b. () => ArrayArray# -> arr b
+ Data.Primitive.Contiguous: lift :: Contiguous arr => ArrayArray# -> arr b
- Data.Primitive.Contiguous: map :: (Contiguous arr, Element arr b, Element arr c) => (b -> c) -> arr b -> arr c
+ Data.Primitive.Contiguous: map :: (Contiguous arr1, Element arr1 b, Contiguous arr2, Element arr2 c) => b -> c -> arr1 b -> arr2 c
- Data.Primitive.Contiguous: new :: (HasCallStack, Contiguous arr, Element arr b) => Int -> ST s (Mutable arr s b)
+ Data.Primitive.Contiguous: new :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Int -> m (Mutable arr (PrimState m) b)
- Data.Primitive.Contiguous: read :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> ST s b
+ Data.Primitive.Contiguous: read :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> m b
- Data.Primitive.Contiguous: resize :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> ST s (Mutable arr s b)
+ Data.Primitive.Contiguous: resize :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> m (Mutable arr (PrimState m) b)
- Data.Primitive.Contiguous: size :: Contiguous arr => forall b. Element arr b => arr b -> Int
+ Data.Primitive.Contiguous: size :: (Contiguous arr, Element arr b) => arr b -> Int
- Data.Primitive.Contiguous: sizeMutable :: Contiguous arr => forall b s. Element arr b => Mutable arr s b -> ST s Int
+ Data.Primitive.Contiguous: sizeMutable :: (Contiguous arr, PrimMonad m, Element arr b) => Mutable arr PrimState m b -> m Int
- Data.Primitive.Contiguous: unlift :: Contiguous arr => forall b. () => arr b -> ArrayArray#
+ Data.Primitive.Contiguous: unlift :: Contiguous arr => arr b -> ArrayArray#
- Data.Primitive.Contiguous: unsafeFreeze :: Contiguous arr => forall s b. () => Mutable arr s b -> ST s arr b
+ Data.Primitive.Contiguous: unsafeFreeze :: (Contiguous arr, PrimMonad m) => Mutable arr PrimState m b -> m arr b
- Data.Primitive.Contiguous: write :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> b -> ST s ()
+ Data.Primitive.Contiguous: write :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> b -> m ()
Files
contiguous-checked.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.0 name: contiguous-checked-version: 0.2.0.0+version: 0.3.0.0 description: Please see the README on GitHub homepage: https://github.com/andrewthad/contiguous-checked bug-reports: https://github.com/andrewthad/contiguous-checked/issues@@ -23,6 +23,6 @@ build-depends: base >=4.9 && <5 , primitive >= 0.6.4- , contiguous >= 0.2 && < 0.3+ , contiguous >= 0.3 && < 0.4 default-language: Haskell2010
src/Data/Primitive/Contiguous.hs view
@@ -18,6 +18,9 @@ , C.Always -- * Primitives , C.empty+ , C.null+ , C.replicateM+ , C.rnf , new , index , index#@@ -40,17 +43,22 @@ , C.foldr , C.foldl' , C.foldr'+ , C.foldMap , C.foldMap' , C.foldlM'+ , C.traverse_+ , C.itraverse_ , unsafeFromListN , unsafeFromListReverseN+ , C.liftHashWithSalt+ , C.same ) where import Prelude hiding (map,read) import "contiguous" Data.Primitive.Contiguous (Contiguous,Element,Mutable) import Control.Exception (ArrayException(..),toException)-import Control.Monad.ST (ST)+import Control.Monad.Primitive (PrimMonad,PrimState) import GHC.Exts (raise#) import GHC.Stack (HasCallStack,prettyCallStack,callStack) @@ -65,7 +73,7 @@ check# _ True x = x check# errMsg False _ = raise# (toException $ IndexOutOfBounds $ "Data.Primitive.Contiguous." ++ errMsg ++ "\n" ++ prettyCallStack callStack) -new :: (HasCallStack, Contiguous arr, Element arr b) => Int -> ST s (Mutable arr s b)+new :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Int -> m (Mutable arr (PrimState m) b) new n = check "new: negative size" (n>=0) (C.new n) index :: (HasCallStack, Contiguous arr, Element arr b) => arr b -> Int -> b@@ -89,24 +97,24 @@ where sz = C.size arr -read :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> ST s b+read :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> m b read marr i = do sz <- C.sizeMutable marr check ("read: out of bounds [ix=" ++ show i ++ ",sz=" ++ show sz ++ "]") (i >= 0 && i < sz) (C.read marr i) -write :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> b -> ST s ()+write :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> b -> m () write marr i x = do sz <- C.sizeMutable marr check ("write: out of bounds [ix=" ++ show i ++ ",sz=" ++ show sz ++ "]") (i >= 0 && i < sz) (C.write marr i x) -resize :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> ST s (Mutable arr s b)+resize :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> m (Mutable arr (PrimState m) b) resize marr n = check "resize: negative size" (n>=0) (C.resize marr n) -copy :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> arr b -> Int -> Int -> ST s ()+copy :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> arr b -> Int -> Int -> m () copy marr s1 arr s2 l = do sz <- C.sizeMutable marr let explain = L.concat@@ -126,7 +134,7 @@ (s1>=0 && s2>=0 && l>=0 && (s2+l)<=C.size arr && (s1+l)<=sz) (C.copy marr s1 arr s2 l) -copyMutable :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> Mutable arr s b -> Int -> Int -> ST s ()+copyMutable :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> Mutable arr (PrimState m) b -> Int -> Int -> m () copyMutable marr1 s1 marr2 s2 l = do siz1 <- C.sizeMutable marr1 siz2 <- C.sizeMutable marr2@@ -152,7 +160,7 @@ (s>=0 && l>=0 && (s+l)<=C.size arr) (C.clone arr s l) -cloneMutable :: (HasCallStack, Contiguous arr, Element arr b) => Mutable arr s b -> Int -> Int -> ST s (Mutable arr s b)+cloneMutable :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Mutable arr (PrimState m) b -> Int -> Int -> m (Mutable arr (PrimState m) b) cloneMutable marr s l = do siz <- C.sizeMutable marr check "cloneMutable: index range out of bounds"