vector-builder 0.3.6 → 0.3.7
raw patch · 7 files changed
+26/−62 lines, 7 filesdep ~basedep ~rerebasedep ~tastyPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, rerebase, tasty, tasty-hunit, tasty-quickcheck
API changes (from Hackage documentation)
+ VectorBuilder.Builder: foldable :: Foldable foldable => foldable element -> Builder element
- VectorBuilder.Alternative: many :: Alternative m => m a -> m (Vector a)
+ VectorBuilder.Alternative: many :: (Alternative m, Vector vector a) => m a -> m (vector a)
- VectorBuilder.Alternative: some :: Alternative m => m a -> m (Vector a)
+ VectorBuilder.Alternative: some :: (Alternative m, Vector vector a) => m a -> m (vector a)
- VectorBuilder.MonadPlus: many :: MonadPlus m => m a -> m (Vector a)
+ VectorBuilder.MonadPlus: many :: (MonadPlus m, Vector vector element) => m element -> m (vector element)
- VectorBuilder.MonadPlus: sepBy :: MonadPlus m => m element -> m separator -> m (Vector element)
+ VectorBuilder.MonadPlus: sepBy :: (MonadPlus m, Vector vector element) => m element -> m separator -> m (vector element)
- VectorBuilder.MonadPlus: sepBy1 :: MonadPlus m => m element -> m separator -> m (Vector element)
+ VectorBuilder.MonadPlus: sepBy1 :: (MonadPlus m, Vector vector element) => m element -> m separator -> m (vector element)
Files
- library/VectorBuilder/Alternative.hs +3/−2
- library/VectorBuilder/Builder.hs +1/−0
- library/VectorBuilder/Core/Builder.hs +5/−0
- library/VectorBuilder/Core/Update.hs +5/−0
- library/VectorBuilder/MonadPlus.hs +5/−4
- tests/Main.hs +1/−1
- vector-builder.cabal +6/−55
library/VectorBuilder/Alternative.hs view
@@ -9,10 +9,11 @@ import Data.Vector (Vector) import qualified VectorBuilder.Builder as A import qualified VectorBuilder.Vector as B+import qualified Data.Vector.Generic as C {-# INLINABLE many #-}-many :: Alternative m => m a -> m (Vector a)+many :: (Alternative m, C.Vector vector a) => m a -> m (vector a) many = fmap B.build . manyBuilder {-# INLINABLE manyBuilder #-}@@ -22,7 +23,7 @@ in loop {-# INLINABLE some #-}-some :: Alternative m => m a -> m (Vector a)+some :: (Alternative m, C.Vector vector a) => m a -> m (vector a) some m = B.build <$> someBuilder m {-# INLINABLE someBuilder #-}
library/VectorBuilder/Builder.hs view
@@ -4,6 +4,7 @@ empty, singleton, vector,+ foldable, ) where
library/VectorBuilder/Core/Builder.hs view
@@ -39,6 +39,11 @@ vector vector = Builder (B.length vector) (A.writeMany vector) +{-# INLINE foldable #-}+foldable :: Foldable foldable => foldable element -> Builder element+foldable foldable =+ Builder (length foldable) (A.writeFoldable foldable)+ -- * Updates
library/VectorBuilder/Core/Update.hs view
@@ -28,3 +28,8 @@ empty :: Update element empty = Update (\_ _ -> pure ())++{-# INLINE writeFoldable #-}+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/MonadPlus.hs view
@@ -9,10 +9,11 @@ import Data.Vector (Vector) import qualified VectorBuilder.Builder as A import qualified VectorBuilder.Vector as B+import qualified Data.Vector.Generic as C {-# INLINABLE many #-}-many :: MonadPlus m => m a -> m (Vector a)+many :: (MonadPlus m, C.Vector vector element) => m element -> m (vector element) many m = liftM B.build loop where@@ -25,12 +26,12 @@ (return mempty) {-# INLINABLE sepBy #-}-sepBy :: MonadPlus m => m element -> m separator -> m (Vector element)+sepBy :: (MonadPlus m, C.Vector vector element) => m element -> m separator -> m (vector element) sepBy elementM separatorM =- mplus (sepBy1 elementM separatorM) (return mempty)+ mplus (sepBy1 elementM separatorM) (return C.empty) {-# INLINABLE sepBy1 #-}-sepBy1 :: MonadPlus m => m element -> m separator -> m (Vector element)+sepBy1 :: (MonadPlus m, C.Vector vector element) => m element -> m separator -> m (vector element) sepBy1 elementM separatorM = liftM B.build loop where
tests/Main.hs view
@@ -27,6 +27,6 @@ , testCase "Alternative.some on empty" $ assertEqual "" (Left "not enough input")- (D.parseOnly (F.some D.anyChar) "")+ (D.parseOnly (F.some D.anyChar :: D.Parser (Vector Char)) "") ]
vector-builder.cabal view
@@ -1,7 +1,7 @@ name: vector-builder version:- 0.3.6+ 0.3.7 synopsis: Vector builder description:@@ -29,7 +29,7 @@ > where > builder = > B.vector vector <>- > foldMap B.singleton list <>+ > B.foldable list <> > B.singleton element category: Vector@@ -98,57 +98,8 @@ attoparsec >=0.13 && <0.14, QuickCheck >=2.8.1 && <3, quickcheck-instances >=0.3.11 && <0.4,- rerebase ==1.*,- tasty >=1.0.1 && <1.2,- tasty-hunit >=0.10 && <0.11,- tasty-quickcheck >=0.10 && <0.11,+ rerebase <2,+ tasty >=0.12 && <2,+ tasty-hunit >=0.9 && <0.11,+ tasty-quickcheck >=0.9 && <0.11, vector-builder---- benchmark foldl-benchmark--- type:--- exitcode-stdio-1.0--- hs-source-dirs:--- foldl-benchmark--- main-is:--- Main.hs--- ghc-options:--- -O2--- -threaded--- "-with-rtsopts=-N"--- -rtsopts--- 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--- build-depends:--- vector-builder,--- foldl >=1.2 && <2,--- -- benchmarking:--- criterion >=1.1 && <2,--- -- general:--- rerebase <2---- test-suite foldl-profiling--- type:--- exitcode-stdio-1.0--- hs-source-dirs:--- foldl-profiling--- main-is:--- Main.hs--- ghc-options:--- -O2--- -threaded--- "-with-rtsopts=-N"--- -rtsopts--- 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--- build-depends:--- vector-builder,--- foldl >=1.2 && <2,--- -- benchmarking:--- criterion >=1.1 && <2,--- -- general:--- bug ==1.*,--- rerebase <2