vector-builder 0.3.8.4 → 0.3.8.5
raw patch · 10 files changed
+133/−85 lines, 10 filesdep −QuickCheck
Dependencies removed: QuickCheck
Files
- library/VectorBuilder/Alternative.hs +2/−3
- library/VectorBuilder/Core/Builder.hs +3/−4
- library/VectorBuilder/Core/Update.hs +3/−3
- library/VectorBuilder/MVector.hs +1/−1
- library/VectorBuilder/MonadPlus.hs +0/−1
- library/VectorBuilder/Prelude.hs +1/−3
- library/VectorBuilder/Vector.hs +1/−1
- tests/Main.hs +7/−7
- tests/Main/Sample.hs +3/−2
- vector-builder.cabal +112/−60
library/VectorBuilder/Alternative.hs view
@@ -3,7 +3,6 @@ -- For instance, they can be applied with parsing libraries. module VectorBuilder.Alternative where -import Data.Vector (Vector) import qualified Data.Vector.Generic as C import qualified VectorBuilder.Builder as A import VectorBuilder.Prelude hiding (many, some)@@ -14,7 +13,7 @@ many = fmap B.build . manyBuilder {-# INLINEABLE manyBuilder #-}-manyBuilder :: Alternative m => m a -> m (A.Builder a)+manyBuilder :: (Alternative m) => m a -> m (A.Builder a) manyBuilder m = let loop = ((<>) <$> A.singleton <$> m <*> loop) <|> pure mempty in loop@@ -24,5 +23,5 @@ some m = B.build <$> someBuilder m {-# INLINEABLE someBuilder #-}-someBuilder :: Alternative m => m a -> m (A.Builder a)+someBuilder :: (Alternative m) => m a -> m (A.Builder a) someBuilder m = (<>) <$> A.singleton <$> m <*> manyBuilder m
library/VectorBuilder/Core/Builder.hs view
@@ -1,7 +1,6 @@ module VectorBuilder.Core.Builder where import qualified Data.Vector.Generic as B-import qualified Data.Vector.Generic.Mutable as C import qualified VectorBuilder.Core.Update as A import VectorBuilder.Prelude hiding (concat, empty) @@ -39,12 +38,12 @@ -- -- Supports all kinds of vectors: boxed, unboxed, primitive, storable. {-# INLINE vector #-}-vector :: B.Vector vector element => vector element -> Builder element+vector :: (B.Vector vector element) => vector element -> Builder element vector vector = Builder (B.length vector) (A.writeMany vector) {-# INLINE foldable #-}-foldable :: Foldable foldable => foldable element -> Builder element+foldable :: (Foldable foldable) => foldable element -> Builder element foldable foldable = Builder (length foldable) (A.writeFoldable foldable) @@ -71,7 +70,7 @@ flip prepend {-# INLINE concat #-}-concat :: Foldable foldable => foldable (Builder element) -> Builder element+concat :: (Foldable foldable) => foldable (Builder element) -> Builder element concat builders = Builder ( let step size (Builder builderSize _) = size + builderSize
library/VectorBuilder/Core/Update.hs view
@@ -5,7 +5,7 @@ import VectorBuilder.Prelude newtype Update element- = Update (forall s vector. A.MVector vector element => vector s element -> Int -> ST s ())+ = Update (forall s vector. (A.MVector vector element) => vector s element -> Int -> ST s ()) {-# INLINE write #-} write :: element -> Update element@@ -13,7 +13,7 @@ Update (\mVector offset -> A.unsafeWrite mVector offset element) {-# INLINE writeMany #-}-writeMany :: B.Vector vector element => vector element -> Update element+writeMany :: (B.Vector vector element) => vector element -> Update element writeMany appendedVector = Update (\mVector offset -> B.ifoldM' (\_ index element -> A.unsafeWrite mVector (strict (offset + index)) element) () appendedVector) @@ -28,6 +28,6 @@ Update (\_ _ -> pure ()) {-# INLINE writeFoldable #-}-writeFoldable :: Foldable foldable => foldable element -> Update element+writeFoldable :: (Foldable foldable) => foldable element -> Update element writeFoldable foldable = Update (\mVector offset -> foldM_ (\index element -> A.unsafeWrite mVector index element $> succ index) offset foldable)
library/VectorBuilder/MVector.hs view
@@ -12,7 +12,7 @@ -- -- Supports all kinds of vectors: boxed, unboxed, primitive, storable. {-# INLINEABLE build #-}-build :: MVector vector element => A.Builder element -> ST s (vector s element)+build :: (MVector vector element) => A.Builder element -> ST s (vector s element) build (A.Builder size (C.Update update)) = do vector <- unsafeNew size
library/VectorBuilder/MonadPlus.hs view
@@ -3,7 +3,6 @@ -- For instance, they can be applied with parsing libraries. module VectorBuilder.MonadPlus where -import Data.Vector (Vector) import qualified Data.Vector.Generic as C import qualified VectorBuilder.Builder as A import VectorBuilder.Prelude
library/VectorBuilder/Prelude.hs view
@@ -26,7 +26,7 @@ import Data.Fixed as Exports import Data.Foldable as Exports hiding (toList) import Data.Function as Exports hiding (id, (.))-import Data.Functor as Exports+import Data.Functor as Exports hiding (unzip) import Data.Functor.Compose as Exports import Data.IORef as Exports import Data.Int as Exports@@ -65,8 +65,6 @@ import System.Mem as Exports import System.Mem.StableName as Exports import System.Timeout as Exports-import Text.ParserCombinators.ReadP as Exports (ReadP, ReadS, readP_to_S, readS_to_P)-import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readP_to_Prec, readPrec_to_P, readPrec_to_S, readS_to_Prec) import Text.Printf as Exports (hPrintf, printf) import Text.Read as Exports (Read (..), readEither, readMaybe) import Unsafe.Coerce as Exports
library/VectorBuilder/Vector.hs view
@@ -12,6 +12,6 @@ -- -- Supports all kinds of vectors: boxed, unboxed, primitive, storable. {-# INLINE build #-}-build :: Vector vector element => A.Builder element -> vector element+build :: (Vector vector element) => A.Builder element -> vector element build builder = runST (B.build builder >>= unsafeFreeze)
tests/Main.hs view
@@ -7,27 +7,27 @@ import Test.Tasty import Test.Tasty.HUnit import Test.Tasty.QuickCheck-import Test.Tasty.Runners import qualified VectorBuilder.Alternative as F import qualified VectorBuilder.Builder as A import qualified VectorBuilder.MonadPlus as H import qualified VectorBuilder.Vector as B import Prelude +main :: IO () main =- defaultMain $- testGroup+ defaultMain+ $ testGroup "All tests" [ testProperty "samples" $ \(samples :: [C.Sample Int]) -> foldMap C.toVector samples === B.build (foldMap C.toBuilder samples),- testCase "Alternative.some" $- assertEqual+ testCase "Alternative.some"+ $ assertEqual "" (Right (E.fromList "1234")) (D.parseOnly (F.some D.anyChar) "1234"),- testCase "Alternative.some on empty" $- assertEqual+ testCase "Alternative.some on empty"+ $ assertEqual "" (Left "not enough input") (D.parseOnly (F.some D.anyChar :: D.Parser (Vector Char)) ""),
tests/Main/Sample.hs view
@@ -1,7 +1,7 @@ module Main.Sample where import qualified Data.Vector as B-import Test.QuickCheck.Instances+import Test.QuickCheck.Instances () import qualified Test.Tasty.QuickCheck as C import qualified VectorBuilder.Builder as A import Prelude@@ -29,7 +29,7 @@ Vector a -> a List a -> B.fromList a -instance C.Arbitrary a => C.Arbitrary (Sample a) where+instance (C.Arbitrary a) => C.Arbitrary (Sample a) where arbitrary = do constructorIndex <- C.choose (0 :: Int, 3)@@ -38,3 +38,4 @@ 1 -> C.arbitrary >>= return . Singleton 2 -> C.arbitrary >>= return . Vector 3 -> C.arbitrary >>= return . List+ _ -> error "Bug"
vector-builder.cabal view
@@ -1,9 +1,6 @@-name:- vector-builder-version:- 0.3.8.4-synopsis:- Vector builder+name: vector-builder+version: 0.3.8.5+synopsis: Vector builder description: An API for efficient and convenient construction of vectors. It provides the composable `Builder` abstraction, which has instances of the `Monoid` and `Semigroup` classes.@@ -31,73 +28,128 @@ > B.vector vector <> > B.foldable list <> > B.singleton element-category:- Vector-homepage:- https://github.com/nikita-volkov/vector-builder-bug-reports:- https://github.com/nikita-volkov/vector-builder/issues-author:- Nikita Volkov <nikita.y.volkov@mail.ru>-maintainer:- Nikita Volkov <nikita.y.volkov@mail.ru>-copyright:- (c) 2016, Nikita Volkov-license:- MIT-license-file:- LICENSE-build-type:- Simple-cabal-version:- >=1.10 +category: Vector+homepage: https://github.com/nikita-volkov/vector-builder+bug-reports: https://github.com/nikita-volkov/vector-builder/issues+author: Nikita Volkov <nikita.y.volkov@mail.ru>+maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>+copyright: (c) 2016, Nikita Volkov+license: MIT+license-file: LICENSE+build-type: Simple+cabal-version: >=1.10+ source-repository head- type:- git- location:- git://github.com/nikita-volkov/vector-builder.git+ type: git+ location: git://github.com/nikita-volkov/vector-builder.git library- hs-source-dirs:- library+ hs-source-dirs: library default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ NoImplicitPrelude+ NoMonomorphismRestriction+ Arrows+ BangPatterns+ ConstraintKinds+ DataKinds+ DefaultSignatures+ DeriveDataTypeable+ DeriveFoldable+ DeriveFunctor+ DeriveGeneric+ DeriveTraversable+ EmptyDataDecls+ FlexibleContexts+ FlexibleInstances+ FunctionalDependencies+ GADTs+ GeneralizedNewtypeDeriving+ LambdaCase+ LiberalTypeSynonyms+ MagicHash+ MultiParamTypeClasses+ MultiWayIf+ OverloadedStrings+ ParallelListComp+ PatternGuards+ QuasiQuotes+ RankNTypes+ RecordWildCards+ ScopedTypeVariables+ StandaloneDeriving+ TemplateHaskell+ TupleSections+ TypeFamilies+ TypeOperators+ UnboxedTuples++ default-language: Haskell2010 exposed-modules:+ VectorBuilder.Alternative VectorBuilder.Builder+ VectorBuilder.MonadPlus VectorBuilder.MVector VectorBuilder.Vector- VectorBuilder.MonadPlus- VectorBuilder.Alternative+ other-modules:- VectorBuilder.Prelude- VectorBuilder.Core.Update VectorBuilder.Core.Builder+ VectorBuilder.Core.Update+ VectorBuilder.Prelude+ build-depends:- vector >=0.12 && <0.14,- base >=4.10 && <5+ base >=4.10 && <5+ , vector >=0.12 && <0.14 test-suite tests- type:- exitcode-stdio-1.0- hs-source-dirs:- tests- main-is:- Main.hs- other-modules:- Main.Sample+ type: exitcode-stdio-1.0+ hs-source-dirs: tests+ main-is: Main.hs+ other-modules: Main.Sample default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ NoImplicitPrelude+ NoMonomorphismRestriction+ Arrows+ BangPatterns+ ConstraintKinds+ DataKinds+ DefaultSignatures+ DeriveDataTypeable+ DeriveFoldable+ DeriveFunctor+ DeriveGeneric+ DeriveTraversable+ EmptyDataDecls+ FlexibleContexts+ FlexibleInstances+ FunctionalDependencies+ GADTs+ GeneralizedNewtypeDeriving+ LambdaCase+ LiberalTypeSynonyms+ MagicHash+ MultiParamTypeClasses+ MultiWayIf+ OverloadedStrings+ ParallelListComp+ PatternGuards+ QuasiQuotes+ RankNTypes+ RecordWildCards+ ScopedTypeVariables+ StandaloneDeriving+ TemplateHaskell+ TupleSections+ TypeFamilies+ TypeOperators+ UnboxedTuples++ default-language: Haskell2010 build-depends:- attoparsec >=0.13 && <0.15,- QuickCheck >=2.8.1 && <3,- quickcheck-instances >=0.3.11 && <0.4,- rerebase <2,- tasty >=0.12 && <2,- tasty-hunit >=0.9 && <0.11,- tasty-quickcheck >=0.9 && <0.11,- vector-builder+ attoparsec >=0.13 && <0.15+ , quickcheck-instances >=0.3.11 && <0.4+ , rerebase <2+ , tasty >=0.12 && <2+ , tasty-hunit >=0.9 && <0.11+ , tasty-quickcheck >=0.9 && <0.11+ , vector-builder