vector-builder 0.3.5 → 0.3.6
raw patch · 6 files changed
+89/−127 lines, 6 filesdep +attoparsecdep −bugdep −criteriondep −foldldep ~rerebasedep ~tastydep ~tasty-hunit
Dependencies added: attoparsec
Dependencies removed: bug, criterion, foldl, rebase
Dependency ranges changed: rerebase, tasty, tasty-hunit, tasty-quickcheck
Files
- foldl-benchmark/Main.hs +0/−43
- foldl-profiling/Main.hs +0/−15
- library/VectorBuilder/Alternative.hs +16/−5
- tests/Main.hs +12/−1
- tests/Main/Sample.hs +2/−2
- vector-builder.cabal +59/−61
− foldl-benchmark/Main.hs
@@ -1,43 +0,0 @@-module Main where--import Prelude-import Criterion-import Criterion.Main-import qualified Control.Foldl as A-import qualified Data.Vector as F-import qualified Data.Vector.Unboxed as G-import qualified VectorBuilder.Builder as N-import qualified VectorBuilder.Vector as O---main =- defaultMain [boxed, unboxed]- where- comparisons name builderSubject growingSubject =- bgroup name (map comparison sizes)- where- sizes =- [1000, 10000, 100000, 1000000, 10000000]- comparison size =- bgroup (show size)- [- bench "builder" (nf builderSubject input),- bench "growing" (nf growingSubject input)- ]- where- input =- [0..size]- boxed =- comparisons "boxed" builderSubject growingSubject- where- builderSubject input =- A.fold (A.foldMap N.singleton O.build) input :: Vector Int- growingSubject input =- runST (A.foldM A.vector input) :: Vector Int- unboxed =- comparisons "unboxed" builderSubject growingSubject- where- builderSubject input =- A.fold (A.foldMap N.singleton O.build) input :: G.Vector Int- growingSubject input =- runST (A.foldM A.vector input) :: G.Vector Int
− foldl-profiling/Main.hs
@@ -1,15 +0,0 @@-module Main where--import Prelude-import qualified Data.Vector.Unboxed as V-import qualified Control.Foldl as L-import qualified VectorBuilder.Builder as N-import qualified VectorBuilder.Vector as O--main :: IO ()-main = (print . V.maximum) (L.fold fold input) where- input = [1..1000000] :: [Int]- fold = L.Fold step begin done where- begin = N.empty- step x a = x <> N.singleton a- done = O.build
library/VectorBuilder/Alternative.hs view
@@ -5,7 +5,7 @@ module VectorBuilder.Alternative where -import VectorBuilder.Prelude+import VectorBuilder.Prelude hiding (many, some) import Data.Vector (Vector) import qualified VectorBuilder.Builder as A import qualified VectorBuilder.Vector as B@@ -13,7 +13,18 @@ {-# INLINABLE many #-} many :: Alternative m => m a -> m (Vector a)-many m =- fmap B.build loop- where- loop = ((<>) <$> A.singleton <$> m <*> loop) <|> pure mempty+many = fmap B.build . manyBuilder++{-# INLINABLE manyBuilder #-}+manyBuilder :: Alternative m => m a -> m (A.Builder a)+manyBuilder m = let+ loop = ((<>) <$> A.singleton <$> m <*> loop) <|> pure mempty+ in loop++{-# INLINABLE some #-}+some :: Alternative m => m a -> m (Vector a)+some m = B.build <$> someBuilder m++{-# INLINABLE someBuilder #-}+someBuilder :: Alternative m => m a -> m (A.Builder a)+someBuilder m = (<>) <$> A.singleton <$> m <*> manyBuilder m
tests/Main.hs view
@@ -1,13 +1,16 @@ module Main where -import Rebase.Prelude+import Prelude import Test.Tasty import Test.Tasty.Runners import Test.Tasty.HUnit import Test.Tasty.QuickCheck import qualified VectorBuilder.Builder as A import qualified VectorBuilder.Vector as B+import qualified VectorBuilder.Alternative as F import qualified Main.Sample as C+import qualified Data.Attoparsec.Text as D+import qualified Data.Vector as E main =@@ -17,5 +20,13 @@ testProperty "" $ \(samples :: [C.Sample Int]) -> foldMap C.toVector samples === B.build (foldMap C.toBuilder samples)+ ,+ testCase "Alternative.some" $ assertEqual ""+ (Right (E.fromList "1234"))+ (D.parseOnly (F.some D.anyChar) "1234")+ ,+ testCase "Alternative.some on empty" $ assertEqual ""+ (Left "not enough input")+ (D.parseOnly (F.some D.anyChar) "") ]
tests/Main/Sample.hs view
@@ -1,9 +1,9 @@ module Main.Sample where -import Rebase.Prelude+import Prelude import Test.QuickCheck.Instances import qualified VectorBuilder.Builder as A-import qualified Rebase.Data.Vector as B+import qualified Data.Vector as B import qualified Test.Tasty.QuickCheck as C
vector-builder.cabal view
@@ -1,7 +1,7 @@ name: vector-builder version:- 0.3.5+ 0.3.6 synopsis: Vector builder description:@@ -76,10 +76,10 @@ VectorBuilder.Core.Update VectorBuilder.Core.Builder build-depends:- vector >= 0.11 && < 0.13,- semigroups >= 0.16 && < 0.20,- base-prelude < 2,- base >= 4.6 && < 5+ vector >=0.11 && <0.13,+ semigroups >=0.16 && <0.20,+ base-prelude <2,+ base >=4.6 && <5 test-suite tests type:@@ -95,62 +95,60 @@ default-language: Haskell2010 build-depends:- -- testing:- tasty >=0.12 && <0.13,- tasty-quickcheck >=0.9 && <0.10,- tasty-hunit >=0.9 && <0.10,- quickcheck-instances >=0.3.11 && <0.4,+ attoparsec >=0.13 && <0.14, QuickCheck >=2.8.1 && <3,- -- - vector-builder,- -- - rebase+ 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,+ 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.*,- -- benchmarking:- criterion >= 1.1 && < 2,- -- general:- rerebase < 2+-- 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.*,- -- benchmarking:- criterion >= 1.1 && < 2,- -- general:- bug == 1.*,- 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