comfort-array 0.5.2.3 → 0.5.3
raw patch · 11 files changed
+260/−176 lines, 11 filesdep ~containersdep ~deepseqdep ~primitivePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: containers, deepseq, primitive
API changes (from Hackage documentation)
+ Data.Array.Comfort.Shape: append :: AppendSemigroup sh => sh -> sh -> sh
+ Data.Array.Comfort.Shape: class (AppendSemigroup sh) => AppendMonoid sh
+ Data.Array.Comfort.Shape: class (C sh) => AppendSemigroup sh
+ Data.Array.Comfort.Shape: empty :: AppendMonoid sh => sh
+ Data.Array.Comfort.Shape: instance (Data.Array.Comfort.Shape.AppendSemigroup sh0, Data.Array.Comfort.Shape.C sh1, GHC.Classes.Eq sh1) => Data.Array.Comfort.Shape.AppendSemigroup (sh0, sh1)
+ Data.Array.Comfort.Shape: instance (Data.Array.Comfort.Shape.AppendSemigroup sh0, Data.Array.Comfort.Shape.C sh1, GHC.Classes.Eq sh1, Data.Array.Comfort.Shape.C sh2, GHC.Classes.Eq sh2) => Data.Array.Comfort.Shape.AppendSemigroup (sh0, sh1, sh2)
+ Data.Array.Comfort.Shape: instance Data.Array.Comfort.Shape.AppendMonoid Data.Array.Comfort.Shape.Zero
+ Data.Array.Comfort.Shape: instance Data.Array.Comfort.Shape.AppendSemigroup Data.Array.Comfort.Shape.Zero
+ Data.Array.Comfort.Shape: instance GHC.Real.Integral n => Data.Array.Comfort.Shape.AppendMonoid (Data.Array.Comfort.Shape.OneBased n)
+ Data.Array.Comfort.Shape: instance GHC.Real.Integral n => Data.Array.Comfort.Shape.AppendMonoid (Data.Array.Comfort.Shape.ZeroBased n)
+ Data.Array.Comfort.Shape: instance GHC.Real.Integral n => Data.Array.Comfort.Shape.AppendSemigroup (Data.Array.Comfort.Shape.OneBased n)
+ Data.Array.Comfort.Shape: instance GHC.Real.Integral n => Data.Array.Comfort.Shape.AppendSemigroup (Data.Array.Comfort.Shape.ZeroBased n)
+ Data.Array.Comfort.Storable.Mutable.Private: readEither :: (PrimMonad m, Indexed sh, Storable a) => Array m sh a -> Index sh -> Either String (m a)
+ Data.Array.Comfort.Storable.Private: append :: (C shx, C shy, Storable a) => (shx -> shy -> shz) -> Array shx a -> Array shy a -> Array shz a
+ Data.Array.Comfort.Storable.Private: instance (Data.Array.Comfort.Shape.AppendMonoid sh, Foreign.Storable.Storable a) => GHC.Base.Monoid (Data.Array.Comfort.Storable.Private.Array sh a)
+ Data.Array.Comfort.Storable.Private: instance (Data.Array.Comfort.Shape.AppendSemigroup sh, Foreign.Storable.Storable a) => GHC.Base.Semigroup (Data.Array.Comfort.Storable.Private.Array sh a)
Files
- comfort-array.cabal +6/−5
- src/Data/Array/Comfort/Boxed.hs +8/−7
- src/Data/Array/Comfort/Boxed/Unchecked.hs +4/−4
- src/Data/Array/Comfort/Shape.hs +49/−0
- src/Data/Array/Comfort/Storable.hs +13/−6
- src/Data/Array/Comfort/Storable/Mutable/Private.hs +7/−2
- src/Data/Array/Comfort/Storable/Private.hs +30/−2
- src/Data/Array/Comfort/Storable/Unchecked.hs +1/−8
- test/DocTest/Data/Array/Comfort/Shape.hs +98/−98
- test/DocTest/Data/Array/Comfort/Storable.hs +29/−29
- test/DocTest/Data/Array/Comfort/Storable/Unchecked.hs +15/−15
comfort-array.cabal view
@@ -1,5 +1,5 @@ Name: comfort-array-Version: 0.5.2.3+Version: 0.5.3 License: BSD3 License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -97,7 +97,7 @@ test-module.list Source-Repository this- Tag: 0.5.2.3+ Tag: 0.5.3 Type: darcs Location: https://hub.darcs.net/thielema/comfort-array/ @@ -112,14 +112,15 @@ Library Build-Depends: storablevector >=0.2 && <0.3,- primitive >=0.6.4 && <0.9,+ -- 0.7.1 required for arrayFromList, arrayFromListN+ primitive >=0.7.1 && <0.10, guarded-allocation >=0.0.1 && <0.1, storable-record >=0.0.1 && <0.1, tagged >=0.7 && <0.9,- deepseq >=1.3 && <1.5,+ deepseq >=1.3 && <1.6, QuickCheck >=2 && <3, semigroups >=0.18.3 && <1.0,- containers >=0.4 && <0.7,+ containers >=0.4 && <0.8, -- transformers-compat required for Functor.Classes in GHC-7.8.4 transformers-compat >=0.7.2 && <0.8, transformers >=0.3 && <0.7,
src/Data/Array/Comfort/Boxed.hs view
@@ -54,7 +54,6 @@ import Data.Traversable (Traversable, traverse) import Data.Foldable (forM_) import Data.Either.HT (maybeRight)-import Data.Maybe (fromMaybe) import Prelude hiding (zipWith, replicate) @@ -122,14 +121,16 @@ infixl 9 ! (!) :: (Shape.Indexed sh) => Array sh a -> Shape.Index sh -> a-(!) arr ix =- fromMaybe (error "Array.Comfort.Boxed.!: index out of bounds") $- accessMaybe arr ix+(!) arr =+ either (error . ("Array.Comfort.Boxed.!: " ++)) id . accessEither arr accessMaybe :: (Shape.Indexed sh) => Array sh a -> Shape.Index sh -> Maybe a-accessMaybe (Array sh arr) ix =- fmap (Prim.indexArray arr) $ maybeRight $- Shape.getChecked $ Shape.unifiedOffset sh ix+accessMaybe arr = maybeRight . accessEither arr++accessEither ::+ (Shape.Indexed sh) => Array sh a -> Shape.Index sh -> Either String a+accessEither (Array sh arr) ix =+ fmap (Prim.indexArray arr) $ Shape.getChecked $ Shape.unifiedOffset sh ix zipWith ::
src/Data/Array/Comfort/Boxed/Unchecked.hs view
@@ -117,11 +117,11 @@ List.map (Prim.indexArray arr) $ List.take (Shape.size sh) [0..] fromList :: (Shape.C sh) => sh -> [a] -> Array sh a-fromList sh xs = Array sh $ Prim.fromListN (Shape.size sh) xs+fromList sh xs = Array sh $ Prim.arrayFromListN (Shape.size sh) xs vectorFromList :: [a] -> Array (Shape.ZeroBased Int) a vectorFromList xs =- let arr = Prim.fromList xs+ let arr = Prim.arrayFromList xs in Array (Shape.ZeroBased $ Prim.sizeofArray arr) arr replicate :: (Shape.C sh) => sh -> a -> Array sh a@@ -132,13 +132,13 @@ map :: (Shape.C sh) => (a -> b) -> Array sh a -> Array sh b map f (Array sh arr) = Array sh $ let n = Shape.size sh- in Prim.fromListN n $ List.map (f . Prim.indexArray arr) $ List.take n [0..]+ in Prim.arrayFromListN n $ List.map (f . Prim.indexArray arr) $ List.take n [0..] zipWith :: (Shape.C sh) => (a -> b -> c) -> Array sh a -> Array sh b -> Array sh c zipWith f (Array sha arra) (Array _shb arrb) = Array sha $ let n = Shape.size sha- in Prim.fromListN n $+ in Prim.arrayFromListN n $ List.map (\k -> f (Prim.indexArray arra k) (Prim.indexArray arrb k)) $ List.take n [0..]
src/Data/Array/Comfort/Shape.hs view
@@ -9,6 +9,8 @@ InvIndexed(..), messageIndexFromOffset, assertIndexFromOffset, Static(..), Pattern(..),+ AppendSemigroup(..),+ AppendMonoid(..), requireCheck, CheckSingleton(..),@@ -286,6 +288,19 @@ indexPattern :: (Index sh -> x) -> sh -> DataPattern sh x ++{- |+We cannot use 'Semigroup'+because 'Semigroup' instances for '()' and '(a,b)' are already defined in a way,+that is incompatible for our needs.+-}+class (C sh) => AppendSemigroup sh where+ append :: sh -> sh -> sh++class (AppendSemigroup sh) => AppendMonoid sh where+ empty :: sh++ data Zero = Zero deriving (Eq, Ord, Show) @@ -303,7 +318,13 @@ indexPattern _ Zero = () -} +instance AppendSemigroup Zero where+ append Zero Zero = Zero +instance AppendMonoid Zero where+ empty = Zero++ instance C () where size () = 1 @@ -374,7 +395,13 @@ then error "Shape.zeroBasedSplit: negative number of elements" else let k = min n m in ZeroBased k ::+ ZeroBased (m-k) +instance (Integral n) => AppendSemigroup (ZeroBased n) where+ append (ZeroBased n) (ZeroBased m) = ZeroBased (n+m) +instance (Integral n) => AppendMonoid (ZeroBased n) where+ empty = ZeroBased 0++ instance (Integral n) => Pattern (ZeroBased n) where type DataPattern (ZeroBased n) x = n -> x indexPattern extend (ZeroBased _n) = extend@@ -420,7 +447,13 @@ assertIndexFromOffset "OneBased" k0 $ 0<=k && k<len pure $ 1+k +instance (Integral n) => AppendSemigroup (OneBased n) where+ append (OneBased n) (OneBased m) = OneBased (n+m) +instance (Integral n) => AppendMonoid (OneBased n) where+ empty = OneBased 0++ {- | 'Range' denotes an inclusive range like those of the Haskell 98 standard @Array@ type from the @array@ package.@@ -839,6 +872,14 @@ instance (Static sh0, Static sh1) => Static (sh0,sh1) where static = (static, static) +instance+ (AppendSemigroup sh0, C sh1, Eq sh1) =>+ AppendSemigroup (sh0,sh1) where+ append (sh0a,sh1a) (sh0b,sh1b) =+ if sh1a == sh1b+ then (append sh0a sh0b, sh1a)+ else error $ "Shape.append: column shapes mismatch"+ instance (Pattern sh0, Pattern sh1) => Pattern (sh0,sh1) where type DataPattern (sh0,sh1) x = PatternRecord sh0 (DataPattern sh1 x) indexPattern extend (sh0,sh1) =@@ -880,6 +921,14 @@ instance (Static sh0, Static sh1, Static sh2) => Static (sh0,sh1,sh2) where static = (static, static, static)++instance+ (AppendSemigroup sh0, C sh1, Eq sh1, C sh2, Eq sh2) =>+ AppendSemigroup (sh0,sh1,sh2) where+ append (sh0a,sh1a,sh2a) (sh0b,sh1b,sh2b) =+ if sh1a == sh1b && sh2a == sh2b+ then (append sh0a sh0b, sh1a, sh2a)+ else error $ "Shape.append: column shapes mismatch" runInvIndex :: s -> Back.Backwards (MS.State s) a -> a runInvIndex k = flip MS.evalState k . Back.forwards
src/Data/Array/Comfort/Storable.hs view
@@ -46,6 +46,7 @@ ) where import qualified Data.Array.Comfort.Storable.Mutable.Unchecked as MutArrayNC+import qualified Data.Array.Comfort.Storable.Mutable.Private as MutArrayPriv import qualified Data.Array.Comfort.Storable.Mutable as MutArray import qualified Data.Array.Comfort.Storable.Unchecked as Array import qualified Data.Array.Comfort.Storable.Memory as Memory@@ -75,7 +76,7 @@ import Data.Map (Map) import Data.Set (Set) import Data.Foldable (forM_)-import Data.Maybe (fromMaybe)+import Data.Either.HT (maybeRight) import Data.Semigroup (Semigroup, (<>), Min(Min,getMin), Max(Max,getMax), Arg(Arg)) @@ -255,15 +256,21 @@ infixl 9 ! (!) :: (Shape.Indexed sh, Storable a) => Array sh a -> Shape.Index sh -> a-(!) arr ix =- fromMaybe (errorArray "!" "index out of bounds") $- accessMaybe arr ix+(!) arr = either (errorArray "!") id . accessEither arr accessMaybe :: (Shape.Indexed sh, Storable a) => Array sh a -> Shape.Index sh -> Maybe a-accessMaybe arr ix = runST (do+accessMaybe arr = maybeRight . accessEither arr++accessEither ::+ (Shape.Indexed sh, Storable a) =>+ Array sh a -> Shape.Index sh -> Either String a+accessEither arr ix = runST (do marr <- MutArrayNC.unsafeThaw arr- Trav.sequenceA $ MutArray.readMaybe marr ix)+ case MutArrayPriv.readEither marr ix of+ Right access -> fmap Right access+ Left msg -> return $ Left msg)+-- for GHC>=7.8: Trav.sequenceA $ MutArrayPriv.readEither marr ix) zipWith ::
src/Data/Array/Comfort/Storable/Mutable/Private.hs view
@@ -105,8 +105,13 @@ readMaybe :: (PrimMonad m, Shape.Indexed sh, Storable a) => Array m sh a -> Shape.Index sh -> Maybe (m a)-readMaybe (Array sh fptr) ix =- fmap (withArrayPtr fptr . flip peekElemOff) $ maybeRight $+readMaybe arr = maybeRight . readEither arr++readEither ::+ (PrimMonad m, Shape.Indexed sh, Storable a) =>+ Array m sh a -> Shape.Index sh -> Either String (m a)+readEither (Array sh fptr) ix =+ fmap (withArrayPtr fptr . flip peekElemOff) $ Shape.getChecked $ Shape.unifiedOffset sh ix write ::
src/Data/Array/Comfort/Storable/Private.hs view
@@ -3,11 +3,16 @@ import qualified Data.Array.Comfort.Storable.Mutable.Private as MutArray import qualified Data.Array.Comfort.Shape as Shape+import Data.Semigroup (Semigroup((<>)))+import Data.Monoid (Monoid(mempty, mappend)) import qualified Foreign.Marshal.Array.Guarded as Alloc-import Foreign.Storable (Storable, )-import Foreign.ForeignPtr (ForeignPtr, )+import Foreign.Marshal.Array (copyArray, advancePtr)+import Foreign.ForeignPtr (ForeignPtr, withForeignPtr)+import Foreign.Storable (Storable) +import System.IO.Unsafe (unsafePerformIO)+ import Control.DeepSeq (NFData, rnf) import Control.Monad.Primitive (PrimMonad, unsafeIOToPrim) import Control.Monad.ST (runST)@@ -106,3 +111,26 @@ unsafeThaw (Array sh fptr) = unsafeIOToPrim $ liftM (MutArray.Array sh) $ Alloc.thawInplace (Shape.size sh) fptr+++instance (Shape.AppendSemigroup sh, Storable a) => Semigroup (Array sh a) where+ (<>) = append Shape.append++instance (Shape.AppendMonoid sh, Storable a) => Monoid (Array sh a) where+ mappend = (<>)+ mempty = fromList Shape.empty []++append ::+ (Shape.C shx, Shape.C shy, Storable a) =>+ (shx -> shy -> shz) ->+ Array shx a -> Array shy a -> Array shz a+append appendShape (Array shX x) (Array shY y) =+ unsafePerformIO $+ let sizeX = Shape.size shX in+ let sizeY = Shape.size shY in+ fmap (Array (appendShape shX shY) . fst) $+ Alloc.create (sizeX+sizeY) $ \zPtr ->+ withForeignPtr x $ \xPtr ->+ withForeignPtr y $ \yPtr -> do+ copyArray zPtr xPtr sizeX+ copyArray (advancePtr zPtr sizeX) yPtr sizeY
src/Data/Array/Comfort/Storable/Unchecked.hs view
@@ -142,14 +142,7 @@ append :: (Shape.C shx, Shape.C shy, Storable a) => Array shx a -> Array shy a -> Array (shx::+shy) a-append (Array shX x) (Array shY y) =- unsafeCreate (shX::+shY) $ \zPtr ->- withForeignPtr x $ \xPtr ->- withForeignPtr y $ \yPtr -> do- let sizeX = Shape.size shX- let sizeY = Shape.size shY- copyArray zPtr xPtr sizeX- copyArray (advancePtr zPtr sizeX) yPtr sizeY+append = Priv.append (::+) {- | prop> \(QC.NonNegative n) (Array16 x) -> x == Array.mapShape (Shape.ZeroBased . Shape.size) (Array.append (Array.take n x) (Array.drop n x))
test/DocTest/Data/Array/Comfort/Shape.hs view
@@ -1,12 +1,12 @@ -- Do not edit! Automatically created with doctest-extract from src/Data/Array/Comfort/Shape.hs-{-# LINE 123 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 125 "src/Data/Array/Comfort/Shape.hs" #-} module DocTest.Data.Array.Comfort.Shape where import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest -{-# LINE 124 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 126 "src/Data/Array/Comfort/Shape.hs" #-} import qualified Data.Array.Comfort.Shape as Shape import qualified Data.Map as Map import qualified Data.Set as Set@@ -17,64 +17,64 @@ test :: DocTest.T () test = do- DocTest.printPrefix "Data.Array.Comfort.Shape:311: "-{-# LINE 311 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:332: "+{-# LINE 332 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 311 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 332 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices ()) [ExpectedLine [LineChunk "[()]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:334: "-{-# LINE 334 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:355: "+{-# LINE 355 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 334 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 355 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.ZeroBased (7::Int))) [ExpectedLine [LineChunk "[0,1,2,3,4,5,6]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:386: "-{-# LINE 386 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:413: "+{-# LINE 413 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 386 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 413 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.OneBased (7::Int))) [ExpectedLine [LineChunk "[1,2,3,4,5,6,7]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:430: "-{-# LINE 430 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:463: "+{-# LINE 463 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 430 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 463 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.Range (-5) (5::Int))) [ExpectedLine [LineChunk "[-5,-4,-3,-2,-1,0,1,2,3,4,5]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:432: "-{-# LINE 432 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:465: "+{-# LINE 465 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 432 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 465 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.Range (-1,-1) (1::Int,1::Int))) [ExpectedLine [LineChunk "[(-1,-1),(-1,0),(-1,1),(0,-1),(0,0),(0,1),(1,-1),(1,0),(1,1)]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:482: "-{-# LINE 482 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:515: "+{-# LINE 515 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 482 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 515 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.Shifted (-4) (8::Int))) [ExpectedLine [LineChunk "[-4,-3,-2,-1,0,1,2,3]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:547: "-{-# LINE 547 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:580: "+{-# LINE 580 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 547 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 580 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.Enumeration :: Shape.Enumeration Ordering)) [ExpectedLine [LineChunk "[LT,EQ,GT]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:611: "-{-# LINE 611 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:644: "+{-# LINE 644 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 611 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 644 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Set.fromList "comfort")) [ExpectedLine [LineChunk "\"cfmort\""]]- DocTest.printPrefix "Data.Array.Comfort.Shape:647: "-{-# LINE 647 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:680: "+{-# LINE 680 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 647 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 680 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ fmap Shape.ZeroBased $ Map.fromList [('b', (0::Int)), ('a', 5), ('c', 2)]) [ExpectedLine [LineChunk "[('a',0),('a',1),('a',2),('a',3),('a',4),('c',0),('c',1)]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:712: "-{-# LINE 712 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:745: "+{-# LINE 745 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 712 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 745 "src/Data/Array/Comfort/Shape.hs" #-} ( let sh2 = (Shape.ZeroBased (2::Int), Shape.ZeroBased (2::Int)) in let sh3 = (Shape.ZeroBased (3::Int), Shape.ZeroBased (3::Int)) in@@ -83,134 +83,134 @@ Shape.indexFromOffset (Shape.Deferred sh2) 3) ) [ExpectedLine [LineChunk "(4,3)"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:816: "-{-# LINE 816 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:849: "+{-# LINE 849 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 816 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 849 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.ZeroBased (3::Int), Shape.ZeroBased (3::Int))) [ExpectedLine [LineChunk "[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:922: "-{-# LINE 922 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:971: "+{-# LINE 971 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 922 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 971 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.Square $ Shape.ZeroBased (3::Int)) [ExpectedLine [LineChunk "[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:976: "-{-# LINE 976 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1025: "+{-# LINE 1025 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 976 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1025 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.Cube $ Shape.ZeroBased (2::Int)) [ExpectedLine [LineChunk "[(0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1035: "-{-# LINE 1035 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1084: "+{-# LINE 1084 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1035 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1084 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.Triangular Shape.Upper $ Shape.ZeroBased (3::Int)) [ExpectedLine [LineChunk "[(0,0),(0,1),(0,2),(1,1),(1,2),(2,2)]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1037: "-{-# LINE 1037 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1086: "+{-# LINE 1086 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1037 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1086 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.Triangular Shape.Lower $ Shape.ZeroBased (3::Int)) [ExpectedLine [LineChunk "[(0,0),(1,0),(1,1),(2,0),(2,1),(2,2)]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1169: "-{-# LINE 1169 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1218: "+{-# LINE 1218 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1169 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1218 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.simplexAscending (replicate 3 Shape.AllDistinct) $ Shape.ZeroBased (4::Int)) [ExpectedLine [LineChunk "[[0,1,2],[0,1,3],[0,2,3],[1,2,3]]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1171: "-{-# LINE 1171 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1220: "+{-# LINE 1220 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1171 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1220 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.simplexAscending (replicate 3 Shape.SomeRepetitive) $ Shape.ZeroBased (3::Int)) [ExpectedLine [LineChunk "[[0,0,0],[0,0,1],[0,0,2],[0,1,1],[0,1,2],[0,2,2],[1,1,1],[1,1,2],[1,2,2],[2,2,2]]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1173: "-{-# LINE 1173 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1222: "+{-# LINE 1222 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1173 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1222 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.simplexAscending [Shape.Repetitive,Shape.Distinct,Shape.Repetitive] $ Shape.ZeroBased (4::Int)) [ExpectedLine [LineChunk "[[0,0,1],[0,0,2],[0,0,3],[0,1,2],[0,1,3],[0,2,3],[1,1,2],[1,1,3],[1,2,3],[2,2,3]]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1175: "-{-# LINE 1175 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1224: "+{-# LINE 1224 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1175 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1224 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.simplexAscending [Shape.Repetitive,Shape.Distinct,Shape.Distinct] $ Shape.ZeroBased (4::Int)) [ExpectedLine [LineChunk "[[0,0,1],[0,0,2],[0,0,3],[0,1,2],[0,1,3],[0,2,3],[1,1,2],[1,1,3],[1,2,3],[2,2,3]]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1178: "-{-# LINE 1178 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1227: "+{-# LINE 1227 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1178 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1227 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.simplexDescending (replicate 3 Shape.AllDistinct) $ Shape.ZeroBased (4::Int)) [ExpectedLine [LineChunk "[[2,1,0],[3,1,0],[3,2,0],[3,2,1]]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1180: "-{-# LINE 1180 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1229: "+{-# LINE 1229 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1180 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1229 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.simplexDescending (replicate 3 Shape.SomeRepetitive) $ Shape.ZeroBased (3::Int)) [ExpectedLine [LineChunk "[[0,0,0],[1,0,0],[1,1,0],[1,1,1],[2,0,0],[2,1,0],[2,1,1],[2,2,0],[2,2,1],[2,2,2]]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1182: "-{-# LINE 1182 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1231: "+{-# LINE 1231 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1182 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1231 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.simplexDescending [Shape.Repetitive,Shape.Distinct,Shape.Repetitive] $ Shape.ZeroBased (4::Int)) [ExpectedLine [LineChunk "[[1,1,0],[2,1,0],[2,2,0],[2,2,1],[3,1,0],[3,2,0],[3,2,1],[3,3,0],[3,3,1],[3,3,2]]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1184: "-{-# LINE 1184 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1233: "+{-# LINE 1233 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1184 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1233 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices $ Shape.simplexDescending [Shape.Repetitive,Shape.Distinct,Shape.Distinct] $ Shape.ZeroBased (4::Int)) [ExpectedLine [LineChunk "[[1,1,0],[2,1,0],[2,2,0],[2,2,1],[3,1,0],[3,2,0],[3,2,1],[3,3,0],[3,3,1],[3,3,2]]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1418: "-{-# LINE 1418 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1467: "+{-# LINE 1467 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.property-{-# LINE 1418 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1467 "src/Data/Array/Comfort/Shape.hs" #-} (let shape = Shape.Cyclic (10::Int) in Shape.offset shape (-1) == Shape.offset shape 9)- DocTest.printPrefix "Data.Array.Comfort.Shape:1423: "-{-# LINE 1423 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1472: "+{-# LINE 1472 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1423 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1472 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.Cyclic (7::Int))) [ExpectedLine [LineChunk "[0,1,2,3,4,5,6]"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1467: "-{-# LINE 1467 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1516: "+{-# LINE 1516 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1467 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1516 "src/Data/Array/Comfort/Shape.hs" #-} (Shape.indices (Shape.ZeroBased (3::Int) ::+ Shape.Range 'a' 'c')) [ExpectedLine [LineChunk "[Left 0,Left 1,Left 2,Right 'a',Right 'b',Right 'c']"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1554: "-{-# LINE 1554 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1603: "+{-# LINE 1603 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1554 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1603 "src/Data/Array/Comfort/Shape.hs" #-} (rnf (Shape.NestedTuple (Shape.Element 1, Shape.Element 2))) [ExpectedLine [LineChunk "()"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1556: "-{-# LINE 1556 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1605: "+{-# LINE 1605 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1556 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1605 "src/Data/Array/Comfort/Shape.hs" #-} (rnf (Shape.NestedTuple (Shape.Element 1, (Shape.Element 2, Shape.Element 3)))) [ExpectedLine [LineChunk "()"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1558: "-{-# LINE 1558 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1607: "+{-# LINE 1607 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1558 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1607 "src/Data/Array/Comfort/Shape.hs" #-} (isBottom $ rnf (Shape.NestedTuple (Shape.Element undefined, Shape.Element 2))) [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1560: "-{-# LINE 1560 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1609: "+{-# LINE 1609 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1560 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1609 "src/Data/Array/Comfort/Shape.hs" #-} (isBottom $ rnf (Shape.NestedTuple (Shape.Element undefined, (Shape.Element 2, Shape.Element 3)))) [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1562: "-{-# LINE 1562 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1611: "+{-# LINE 1611 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1562 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1611 "src/Data/Array/Comfort/Shape.hs" #-} (isBottom $ rnf (Shape.NestedTuple (Shape.Element 1, (Shape.Element undefined, Shape.Element 3)))) [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Data.Array.Comfort.Shape:1564: "-{-# LINE 1564 "src/Data/Array/Comfort/Shape.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Shape:1613: "+{-# LINE 1613 "src/Data/Array/Comfort/Shape.hs" #-} DocTest.example-{-# LINE 1564 "src/Data/Array/Comfort/Shape.hs" #-}+{-# LINE 1613 "src/Data/Array/Comfort/Shape.hs" #-} (isBottom $ rnf (Shape.NestedTuple (Shape.Element 1, (Shape.Element 2, Shape.Element undefined)))) [ExpectedLine [LineChunk "True"]]
test/DocTest/Data/Array/Comfort/Storable.hs view
@@ -1,12 +1,12 @@ -- Do not edit! Automatically created with doctest-extract from src/Data/Array/Comfort/Storable.hs-{-# LINE 86 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 87 "src/Data/Array/Comfort/Storable.hs" #-} module DocTest.Data.Array.Comfort.Storable where import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest -{-# LINE 87 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 88 "src/Data/Array/Comfort/Storable.hs" #-} import qualified Data.Array.Comfort.Storable as Array import qualified Data.Array.Comfort.Shape as Shape import Data.Array.Comfort.Storable (Array, (!))@@ -59,57 +59,57 @@ test :: DocTest.T () test = do- DocTest.printPrefix "Data.Array.Comfort.Storable:151: "-{-# LINE 151 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:152: "+{-# LINE 152 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example-{-# LINE 151 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 152 "src/Data/Array/Comfort/Storable.hs" #-} (Array.fromList (Shape.ZeroBased (5::Int)) ['a'..]) [ExpectedLine [LineChunk "StorableArray.fromList (ZeroBased {zeroBasedSize = 5}) \"abcde\""]]- DocTest.printPrefix "Data.Array.Comfort.Storable:164: "-{-# LINE 164 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:165: "+{-# LINE 165 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example-{-# LINE 164 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 165 "src/Data/Array/Comfort/Storable.hs" #-} (Array.fromTuple ('a',('b','c')) :: Array.Array (Shape.NestedTuple Shape.TupleIndex (X,(X,X))) Char) [ExpectedLine [LineChunk "StorableArray.fromList (NestedTuple {getNestedTuple = (Element 0,(Element 1,Element 2))}) \"abc\""]]- DocTest.printPrefix "Data.Array.Comfort.Storable:167: "-{-# LINE 167 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:168: "+{-# LINE 168 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example-{-# LINE 167 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 168 "src/Data/Array/Comfort/Storable.hs" #-} ( let arr = Array.fromTuple ('a',('b','c')) :: Array.Array (Shape.NestedTuple Shape.TupleAccessor (X,(X,X))) Char in (arr ! fst, arr ! (fst.snd)) ) [ExpectedLine [LineChunk "('a','b')"]]- DocTest.printPrefix "Data.Array.Comfort.Storable:188: "-{-# LINE 188 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:189: "+{-# LINE 189 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example-{-# LINE 188 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 189 "src/Data/Array/Comfort/Storable.hs" #-} ( let arr = Array.fromRecord ('a' :+ 'b') in let (real:+imag) = Shape.indexRecordFromShape $ Array.shape arr in (arr ! real, arr ! imag) ) [ExpectedLine [LineChunk "('a','b')"]]- DocTest.printPrefix "Data.Array.Comfort.Storable:303: "-{-# LINE 303 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:310: "+{-# LINE 310 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property-{-# LINE 303 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 310 "src/Data/Array/Comfort/Storable.hs" #-} (QC.forAll genNonEmptyArray2 $ \xs -> QC.forAll (QC.elements $ Shape.indices $ Array.shape xs) $ \(ix0,ix1) -> Array.pick xs ix0 ! ix1 == xs!(ix0,ix1))- DocTest.printPrefix "Data.Array.Comfort.Storable:321: "-{-# LINE 321 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:328: "+{-# LINE 328 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property-{-# LINE 321 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 328 "src/Data/Array/Comfort/Storable.hs" #-} (QC.forAll genArray2 $ \xs -> xs == Array.fromRowArray (snd $ Array.shape xs) (Array.toRowArray xs))- DocTest.printPrefix "Data.Array.Comfort.Storable:338: "-{-# LINE 338 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:345: "+{-# LINE 345 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property-{-# LINE 338 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 345 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.minimum xs ==? minimum (Array.toList xs))- DocTest.printPrefix "Data.Array.Comfort.Storable:346: "-{-# LINE 346 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:353: "+{-# LINE 353 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property-{-# LINE 346 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 353 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.maximum xs ==? maximum (Array.toList xs))- DocTest.printPrefix "Data.Array.Comfort.Storable:358: "-{-# LINE 358 "src/Data/Array/Comfort/Storable.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable:365: "+{-# LINE 365 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property-{-# LINE 358 "src/Data/Array/Comfort/Storable.hs" #-}+{-# LINE 365 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.limits xs ==? (Array.minimum xs, Array.maximum xs))
test/DocTest/Data/Array/Comfort/Storable/Unchecked.hs view
@@ -29,28 +29,28 @@ DocTest.property {-# LINE 134 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} (\x -> Array.singleton x ! () == (x::Word16))- DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:155: "-{-# LINE 155 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:148: "+{-# LINE 148 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} DocTest.property-{-# LINE 155 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+{-# LINE 148 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} (\(QC.NonNegative n) (Array16 x) -> x == Array.mapShape (Shape.ZeroBased . Shape.size) (Array.append (Array.take n x) (Array.drop n x)))- DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:170: "-{-# LINE 170 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:163: "+{-# LINE 163 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} DocTest.property-{-# LINE 170 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+{-# LINE 163 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} (\(Array16 x) (Array16 y) -> let xy = Array.append x y in x == Array.takeLeft xy && y == Array.takeRight xy)- DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:190: "-{-# LINE 190 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:183: "+{-# LINE 183 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} DocTest.property-{-# LINE 190 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+{-# LINE 183 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} (\(Array16 x) (Array16 y) (Array16 z) -> let xyz = Array.append x $ Array.append y z in y == Array.takeCenter xyz)- DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:203: "-{-# LINE 203 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:196: "+{-# LINE 196 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} DocTest.property-{-# LINE 203 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+{-# LINE 196 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} (\(Array16 xs) -> Array.sum xs == sum (Array.toList xs))- DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:209: "-{-# LINE 209 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+ DocTest.printPrefix "Data.Array.Comfort.Storable.Unchecked:202: "+{-# LINE 202 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} DocTest.property-{-# LINE 209 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-}+{-# LINE 202 "src/Data/Array/Comfort/Storable/Unchecked.hs" #-} (\(Array16 xs) -> Array.product xs == product (Array.toList xs))