non-empty 0.3.4 → 0.3.5
raw patch · 4 files changed
+34/−19 lines, 4 filesdep ~containersdep ~deepseq
Dependency ranges changed: containers, deepseq
Files
- non-empty.cabal +2/−2
- src/Data/NonEmpty.hs +1/−0
- src/Data/NonEmptyPrivate.hs +8/−0
- test/Test/Data/NonEmptyPrivate.hs +23/−17
non-empty.cabal view
@@ -1,6 +1,6 @@ Cabal-Version: 2.2 Name: non-empty-Version: 0.3.4+Version: 0.3.5 License: BSD-3-Clause License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -68,7 +68,7 @@ Makefile Source-Repository this- Tag: 0.3.4+ Tag: 0.3.5 Type: darcs Location: https://hub.darcs.net/thielema/non-empty/
src/Data/NonEmpty.hs view
@@ -33,6 +33,7 @@ scanl, scanr, tails, inits, initsRev, removeEach,+ takeUntil, partitionEithersLeft, partitionEithersRight, ) where
src/Data/NonEmptyPrivate.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE FlexibleContexts #-} module Data.NonEmptyPrivate where import qualified Data.NonEmpty.Foldable as FoldU@@ -46,6 +47,7 @@ >>> import Data.Tuple.HT (swap) >>> import Data.Maybe (mapMaybe) >>> import Control.Applicative (liftA2)+>>> import Control.Functor.HT (void) >>> import qualified Test.QuickCheck as QC >>> >>> forRange :: (QC.Testable test) => ((Char,Char) -> test) -> QC.Property@@ -598,6 +600,9 @@ removeEach :: (Traversable f) => T f a -> T f (a, f a) removeEach xs = mapWithIndex (\n _ -> removeAt n xs) 0 xs +{- |+prop> let takeUntil p xs = NonEmpty.zipWith const xs $ () !: void (takeWhile (not . p) $ NonEmpty.flatten xs) in \k xs -> takeUntil (>=k) xs == NonEmpty.takeUntil (>=(k::Int)) xs+-} takeUntil :: (a -> Bool) -> T [] a -> T [] a takeUntil p (Cons x xs) = x !: if p x then [] else ListHT.takeUntil p xs@@ -782,6 +787,9 @@ in \superOffset (Cons i is) -> C.indexHorner (ls,us) (superOffset*size + Ix.index (l,u) i) is +{-+GHC-7.10 requires FlexibleContexts extension for this instance.+-} instance (C.Ix f, Ix.Ix i, Ord (f i)) => Ix.Ix (T f i) where range = C.range index = C.index
test/Test/Data/NonEmptyPrivate.hs view
@@ -1,11 +1,11 @@ -- Do not edit! Automatically created with doctest-extract from src/Data/NonEmptyPrivate.hs-{-# LINE 39 "src/Data/NonEmptyPrivate.hs" #-}+{-# LINE 40 "src/Data/NonEmptyPrivate.hs" #-} module Test.Data.NonEmptyPrivate where import qualified Test.DocTest.Driver as DocTest -{-# LINE 40 "src/Data/NonEmptyPrivate.hs" #-}+{-# LINE 41 "src/Data/NonEmptyPrivate.hs" #-} import qualified Data.NonEmpty as NonEmpty import qualified Data.Empty as Empty import qualified Data.Either.HT as EitherHT@@ -15,6 +15,7 @@ import Data.Tuple.HT (swap) import Data.Maybe (mapMaybe) import Control.Applicative (liftA2)+import Control.Functor.HT (void) import qualified Test.QuickCheck as QC forRange :: (QC.Testable test) => ((Char,Char) -> test) -> QC.Property@@ -23,28 +24,33 @@ test :: DocTest.T () test = do- DocTest.printPrefix "Data.NonEmptyPrivate:743: "-{-# LINE 743 "src/Data/NonEmptyPrivate.hs" #-}+ DocTest.printPrefix "Data.NonEmptyPrivate:604: "+{-# LINE 604 "src/Data/NonEmptyPrivate.hs" #-} DocTest.property-{-# LINE 743 "src/Data/NonEmptyPrivate.hs" #-}+{-# LINE 604 "src/Data/NonEmptyPrivate.hs" #-}+ (let takeUntil p xs = NonEmpty.zipWith const xs $ () !: void (takeWhile (not . p) $ NonEmpty.flatten xs) in \k xs -> takeUntil (>=k) xs == NonEmpty.takeUntil (>=(k::Int)) xs)+ DocTest.printPrefix "Data.NonEmptyPrivate:748: "+{-# LINE 748 "src/Data/NonEmptyPrivate.hs" #-}+ DocTest.property+{-# LINE 748 "src/Data/NonEmptyPrivate.hs" #-} (\xs -> mapMaybe EitherHT.maybeLeft (NonEmpty.flatten xs) == either NonEmpty.flatten fst (NonEmpty.partitionEithersLeft (xs::NonEmpty.T[](Either Char Int))))- DocTest.printPrefix "Data.NonEmptyPrivate:744: "-{-# LINE 744 "src/Data/NonEmptyPrivate.hs" #-}+ DocTest.printPrefix "Data.NonEmptyPrivate:749: "+{-# LINE 749 "src/Data/NonEmptyPrivate.hs" #-} DocTest.property-{-# LINE 744 "src/Data/NonEmptyPrivate.hs" #-}+{-# LINE 749 "src/Data/NonEmptyPrivate.hs" #-} (\xs -> mapMaybe EitherHT.maybeRight (NonEmpty.flatten xs) == either (const []) (NonEmpty.flatten . snd) (NonEmpty.partitionEithersLeft (xs::NonEmpty.T[](Either Char Int))))- DocTest.printPrefix "Data.NonEmptyPrivate:745: "-{-# LINE 745 "src/Data/NonEmptyPrivate.hs" #-}+ DocTest.printPrefix "Data.NonEmptyPrivate:750: "+{-# LINE 750 "src/Data/NonEmptyPrivate.hs" #-} DocTest.property-{-# LINE 745 "src/Data/NonEmptyPrivate.hs" #-}+{-# LINE 750 "src/Data/NonEmptyPrivate.hs" #-} (\xs -> NonEmpty.partitionEithersRight (fmap EitherHT.swap xs) == EitherHT.mapLeft swap (EitherHT.swap (NonEmpty.partitionEithersLeft (xs::NonEmpty.T[](Either Char Int)))))- DocTest.printPrefix "Data.NonEmptyPrivate:755: "-{-# LINE 755 "src/Data/NonEmptyPrivate.hs" #-}+ DocTest.printPrefix "Data.NonEmptyPrivate:760: "+{-# LINE 760 "src/Data/NonEmptyPrivate.hs" #-} DocTest.property-{-# LINE 755 "src/Data/NonEmptyPrivate.hs" #-}+{-# LINE 760 "src/Data/NonEmptyPrivate.hs" #-} (\xs -> NonEmpty.partitionEithersLeft (fmap EitherHT.swap xs) == EitherHT.mapRight swap (EitherHT.swap (NonEmpty.partitionEithersRight (xs::NonEmpty.T[](Either Char Int)))))- DocTest.printPrefix "Data.NonEmptyPrivate:766: "-{-# LINE 766 "src/Data/NonEmptyPrivate.hs" #-}+ DocTest.printPrefix "Data.NonEmptyPrivate:771: "+{-# LINE 771 "src/Data/NonEmptyPrivate.hs" #-} DocTest.property-{-# LINE 766 "src/Data/NonEmptyPrivate.hs" #-}+{-# LINE 771 "src/Data/NonEmptyPrivate.hs" #-} (forRange $ \b0 -> forRange $ \b1 -> forRange $ \b2 -> let b = FuncHT.unzip $ b0!:b1!:b2!:Empty.Cons in map (Ix.index b) (Ix.range b) == take (Ix.rangeSize b) [0..])