packages feed

hw-dsv 0.4.1.0 → 0.4.1.1

raw patch · 20 files changed

+77/−73 lines, 20 filesdep ~criteriondep ~doctestdep ~ghc-primPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: criterion, doctest, ghc-prim, hedgehog, optparse-applicative, text, vector

API changes (from Hackage documentation)

Files

README.md view
@@ -86,9 +86,10 @@  module Example where -import qualified Data.ByteString.Lazy              as LBS-import qualified Data.Vector                       as DV-import qualified HaskellWorks.Data.Dsv.Lazy.Cursor as SVL+import qualified Data.ByteString.Lazy                   as LBS+import qualified Data.Vector                            as DV+import qualified HaskellWorks.Data.Dsv.Lazy.Cursor      as SVL+import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy as SVL  example :: IO () example = do
app/App/Commands.hs view
@@ -8,6 +8,8 @@ import App.Commands.RangeJoin import Options.Applicative +{- HLINT ignore "Monoid law, left identity" -}+ commands :: Parser (IO ()) commands = commandsGeneral <|> commandsDebugging 
app/App/Commands/Generate.hs view
@@ -7,11 +7,11 @@  import Control.Lens import Data.Generics.Product.Any-import Data.List import Options.Applicative       hiding (columns)  import qualified App.Commands.Options.Type as Z import qualified App.Gen                   as G+import qualified Data.List                 as L import qualified Hedgehog.Gen              as G import qualified Hedgehog.Range            as R @@ -29,7 +29,7 @@    csv <- G.sample (G.list (R.singleton rows) (G.list (R.singleton fields) G.field)) :: IO [[String]] -  putStr $ unlines $ map (intercalate "," . map printField) csv+  putStr $ unlines $ map (L.intercalate "," . map printField) csv    return () 
app/App/Commands/QueryLazy.hs view
@@ -16,7 +16,6 @@ import Control.Monad.IO.Class       (liftIO) import Control.Monad.Trans.Resource import Data.Generics.Product.Any-import Data.List import Options.Applicative          hiding (columns)  import qualified App.Commands.Options.Type                as Z@@ -25,6 +24,7 @@ import qualified Data.ByteString                          as BS import qualified Data.ByteString.Builder                  as B import qualified Data.ByteString.Lazy                     as LBS+import qualified Data.List                                as L import qualified Data.Vector                              as DV import qualified HaskellWorks.Data.Dsv.Lazy.Cursor        as SVL import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy   as SVLL@@ -32,6 +32,8 @@ import qualified System.Exit                              as IO import qualified System.IO                                as IO +{- HLINT ignore "Reduce duplication" -}+ defaultMethod :: String defaultMethod = "lazy-traverse" @@ -57,7 +59,7 @@     forM_ rows $ \row -> do       let fieldStrings = columnToFieldString row <$> (opts ^.. the @"columns" . each . the @"number") -      liftIO $ B.hPutBuilder hOut $ mconcat (intersperse outDelimiterBuilder fieldStrings) <> B.word8 10+      liftIO $ B.hPutBuilder hOut $ mconcat (L.intersperse outDelimiterBuilder fieldStrings) <> B.word8 10        return ()   return ()@@ -79,7 +81,7 @@     forM_ rows $ \row -> do       let fieldStrings = columnToFieldString row <$> (opts ^.. the @"columns" . each . the @"number") -      liftIO $ B.hPutBuilder hOut $ mconcat (intersperse outDelimiterBuilder fieldStrings) <> B.word8 10+      liftIO $ B.hPutBuilder hOut $ mconcat (L.intersperse outDelimiterBuilder fieldStrings) <> B.word8 10        return ()   return ()@@ -102,7 +104,7 @@     forM_ rows $ \row -> do       let fieldStrings = fmap B.lazyByteString row -      liftIO $ B.hPutBuilder hOut $ mconcat (intersperse outDelimiterBuilder fieldStrings) <> B.word8 10+      liftIO $ B.hPutBuilder hOut $ mconcat (L.intersperse outDelimiterBuilder fieldStrings) <> B.word8 10        return ()   return ()
app/App/Commands/QueryStrict.hs view
@@ -16,13 +16,13 @@ import Control.Monad.IO.Class       (liftIO) import Control.Monad.Trans.Resource import Data.Generics.Product.Any-import Data.List import Options.Applicative  import qualified App.Commands.Options.Type           as Z import qualified App.IO                              as IO import qualified Data.ByteString                     as BS import qualified Data.ByteString.Builder             as B+import qualified Data.List                           as L import qualified Data.Vector                         as DV import qualified HaskellWorks.Data.Dsv.Strict.Cursor as SVS @@ -41,7 +41,7 @@     forM_ rows $ \row -> do       let fieldStrings = columnToFieldString row <$> (opts ^. the @"columns") -      liftIO $ B.hPutBuilder hOut $ mconcat (intersperse outDelimiterBuilder fieldStrings) <> B.word8 10+      liftIO $ B.hPutBuilder hOut $ mconcat (L.intersperse outDelimiterBuilder fieldStrings) <> B.word8 10        return ()   return ()
app/App/Commands/RangeJoin.hs view
@@ -16,8 +16,7 @@ import Control.Monad.IO.Class       (liftIO) import Control.Monad.Trans.Resource import Data.Generics.Product.Any-import Data.List-import Data.Maybe                   (catMaybes)+import Data.Maybe                   (fromMaybe, mapMaybe) import Data.Word import Options.Applicative          hiding (columns) import Text.Read                    (readMaybe)@@ -27,6 +26,7 @@ import qualified App.IO                                 as IO import qualified Data.ByteString.Builder                as B import qualified Data.ByteString.Lazy                   as LBS+import qualified Data.List                              as L import qualified Data.Text                              as T import qualified Data.Text.Encoding                     as T import qualified Data.Vector                            as DV@@ -35,7 +35,7 @@  rangeJoin :: (DV.Vector LBS.ByteString -> DV.Vector LBS.ByteString -> [LBS.ByteString])   -> Int -> Int -> [DV.Vector LBS.ByteString] -> Int -> Int -> [DV.Vector LBS.ByteString] -> [[LBS.ByteString]]-rangeJoin f aa az as ba bz bs = rangeJoin' f (catMaybes (fmap (mkEntry aa az) as)) (catMaybes (fmap (mkEntry ba bz) bs))+rangeJoin f aa az as ba bz bs = rangeJoin' f (mapMaybe (mkEntry aa az) as) (mapMaybe (mkEntry ba bz) bs)  mkEntry :: Int -> Int -> DV.Vector LBS.ByteString -> Maybe (Word32, Word32, DV.Vector LBS.ByteString) mkEntry a z v = (,, v) <$> lookupWord32 a v <*> lookupWord32 z v@@ -50,15 +50,15 @@   -> [(Word32, Word32, DV.Vector LBS.ByteString)] -> [(Word32, Word32, DV.Vector LBS.ByteString)] -> [[LBS.ByteString]] rangeJoin' f ((ua, uz, u):us) ((va, vz, v):vs) = if   | uz < va   -> ("L":encodeWord32 ua:encodeWord32  uz     :f u e):rangeJoin' f                  us  ((va    , vz, v):vs)-  | vz < ua   -> ("R":encodeWord32 va:encodeWord32  vz     :f e v):rangeJoin' f ((ua    , uz, u):us) (                vs)+  | vz < ua   -> ("R":encodeWord32 va:encodeWord32  vz     :f e v):rangeJoin' f ((ua    , uz, u):us)                  vs   | ua < va   -> ("L":encodeWord32 ua:encodeWord32 (va - 1):f u e):rangeJoin' f ((va    , uz, u):us) ((va    , vz, v):vs)   | va < ua   -> ("R":encodeWord32 va:encodeWord32 (ua - 1):f e v):rangeJoin' f ((ua    , uz, u):us) ((ua    , vz, v):vs)   | uz < vz   -> ("B":encodeWord32 ua:encodeWord32  uz     :f u v):rangeJoin' f                  us  ((uz + 1, vz, v):vs)   | vz < uz   -> ("B":encodeWord32 va:encodeWord32  vz     :f u v):rangeJoin' f ((vz + 1, uz, u):us)                  vs   | otherwise -> ("B":encodeWord32 va:encodeWord32  vz     :f u v):rangeJoin' f                  us                   vs   where e = DV.empty-rangeJoin' f ((ua, uz, _):us) []                = ("L":encodeWord32 ua:encodeWord32 uz:[]):rangeJoin' f us []-rangeJoin' f []               ((va, vz, _):vs)  = ("R":encodeWord32 va:encodeWord32 vz:[]):rangeJoin' f [] vs+rangeJoin' f ((ua, uz, _):us) []                = ["L", encodeWord32 ua, encodeWord32 uz]:rangeJoin' f us []+rangeJoin' f []               ((va, vz, _):vs)  = ["R", encodeWord32 va, encodeWord32 vz]:rangeJoin' f [] vs rangeJoin' _ []               []                = []  encodeWord32 :: Word32 -> LBS.ByteString@@ -67,8 +67,8 @@ mkColumnSelector :: [Z.RangeJoinColumn] -> DV.Vector LBS.ByteString -> DV.Vector LBS.ByteString -> [LBS.ByteString] mkColumnSelector []     _ _ = [] mkColumnSelector (c:cs) u v = case c of-  Z.LtColumn n -> (maybe "" id (u DV.!? n)):mkColumnSelector cs u v-  Z.RtColumn n -> (maybe "" id (v DV.!? n)):mkColumnSelector cs u v+  Z.LtColumn n -> fromMaybe "" (u DV.!? n):mkColumnSelector cs u v+  Z.RtColumn n -> fromMaybe "" (v DV.!? n):mkColumnSelector cs u v  runRangeJoin :: Z.RangeJoinOptions -> IO () runRangeJoin opts = do@@ -95,7 +95,7 @@     (_, hOut) <- IO.openOutputFile outputFilePath Nothing     let outLbsss  = rangeJoin columnSelector input1StartColumn input1StopColumn rows1 input2StartColumn input2StopColumn rows2     let outBss    = fmap (fmap B.lazyByteString) outLbsss-    let outB      = mconcat (intersperse outNewlineBuilder (fmap (mconcat . intersperse outDelimiterBuilder) outBss))+    let outB      = mconcat (L.intersperse outNewlineBuilder (fmap (mconcat . L.intersperse outDelimiterBuilder) outBss))     liftIO $ B.hPutBuilder hOut outB   return () 
app/App/Data/ColumnDesc.hs view
@@ -35,7 +35,7 @@   Nothing          -> lbs  realiseColumnDescLazy :: ColumnDesc Text -> ColumnDesc (LBS.ByteString -> LBS.ByteString)-realiseColumnDescLazy cd = fmap realise cd+realiseColumnDescLazy = fmap realise   where realise :: Text -> LBS.ByteString -> LBS.ByteString         realise t = case t of           "id"             -> id
bench/Main.hs view
@@ -6,7 +6,6 @@ import Control.Monad import Criterion.Main import Data.ByteString                     (ByteString)-import Data.List import Data.Vector                         (Vector) import Data.Word import HaskellWorks.Data.Dsv.Internal.Char (comma, pipe)@@ -15,6 +14,7 @@ import qualified Data.ByteString.Lazy                                   as LBS import qualified Data.Csv                                               as CSV import qualified Data.Csv.Streaming                                     as CSS+import qualified Data.List                                              as L import qualified Data.Vector.Storable                                   as DVS import qualified HaskellWorks.Data.Dsv.Lazy.Cursor                      as SVL import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy                 as SVLL@@ -24,6 +24,9 @@ import qualified HaskellWorks.Data.FromForeignRegion                    as IO import qualified HaskellWorks.Data.RankSelect.CsPoppy                   as RS +{- HLINT ignore "Reduce duplication"        -}+{- HLINT ignore "Monoid law, left identity" -}+ loadCassavaStrict :: FilePath -> IO (Vector (Vector ByteString)) loadCassavaStrict filePath = do   !bs <- LBS.readFile filePath@@ -39,8 +42,7 @@   pure r  loadHwsvStrictIndex :: FilePath -> IO (SVS.DsvCursor ByteString RS.CsPoppy)-loadHwsvStrictIndex filePath =-  SVS.mmapCursor comma True filePath+loadHwsvStrictIndex = SVS.mmapCursor comma True  loadHwsvStrict :: FilePath -> IO (Vector (Vector ByteString)) loadHwsvStrict filePath = SVS.toVectorVector <$> SVS.mmapCursor comma True filePath@@ -63,13 +65,12 @@ makeBenchCsv :: IO [Benchmark] makeBenchCsv = do   entries <- listDirectory "data/bench"-  let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+  let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries   benchmarks <- forM files $ \file -> return $ mempty     <> [bench ("cassava/decode/via-strict/"       <> file) (nfIO (loadCassavaStrict    file))]     <> [bench ("cassava/decode/via-streaming/"    <> file) (nfIO (loadCassavaStreaming file))]     <> [bench ("hw-dsv/decode/via-strict/"        <> file) (nfIO (loadHwsvStrict       file))]     <> [bench ("hw-dsv/decode/via-lazy/"          <> file) (nfIO (loadHwsvLazy         file))]-     <> [bench ("hw-dsv/decode/via-strict/index/"  <> file) (nfIO (loadHwsvStrictIndex  file))]     <> [bench ("hw-dsv/decode/via-lazy/index/"    <> file) (nfIO (loadHwsvLazyIndex    file))]   return (join benchmarks)@@ -77,7 +78,7 @@ makeBenchW64s :: IO [Benchmark] makeBenchW64s = do   entries <- listDirectory "data/bench"-  let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+  let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries   benchmarks <- forM files $ \file -> return     [ env (IO.mmapFromForeignRegion file) $ \v -> bgroup "Creating bit index from mmaped file" $ mempty       <> [bench ("mkIbVector                  with sum" <> file) (whnf (DVS.foldl (+) 0 . SVS.mkIbVector comma) v)]@@ -87,7 +88,7 @@ makeBenchMkInterestBits :: IO [Benchmark] makeBenchMkInterestBits = do   entries <- listDirectory "data/bench"-  let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+  let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries   benchmarks <- forM files $ \file -> return     [ env (IO.mmapFromForeignRegion file) $ \(v :: DVS.Vector Word64) -> bgroup "Loading lazy byte string into Word64s" $ mempty       <> [bench ("mkIbVector                  with sum" <> file) (whnf (DVS.foldr (+) 0 . SVS.mkIbVector        pipe) v)]
hw-dsv.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2  name:                   hw-dsv-version:                0.4.1.0+version:                0.4.1.1 synopsis:               Unbelievably fast streaming DSV file parser description:            Please see the README on Github at <https://github.com/haskell-works/hw-dsv#readme> category:               Text, CSV, SIMD, Succinct Data Structures, Data Structures@@ -12,7 +12,7 @@ copyright:              2018-2020 John Ky license:                BSD-3-Clause license-file:           LICENSE-tested-with:            GHC == 8.10.1, GHC == 8.8.3, GHC == 8.6.5, GHC == 8.4.4+tested-with:            GHC == 9.2.2, GHC == 9.0.2, GHC == 8.10.7, GHC == 8.8.4, GHC == 8.6.5 build-type:             Simple extra-source-files:     README.md                         ChangeLog.md@@ -41,30 +41,30 @@  common appar                      { build-depends: appar                      >= 0.1.8      && < 0.2    } common bits-extra                 { build-depends: bits-extra                 >= 0.0.1.2    && < 0.1    }-common bytestring                 { build-depends: bytestring                 >= 0.10       && < 0.11   }+common bytestring                 { build-depends: bytestring                 >= 0.10       && < 0.12   } common cassava                    { build-depends: cassava                    >= 0.5.1.0    && < 0.6    } common criterion                  { build-depends: criterion                  >= 1.4.1.0    && < 1.6    } common deepseq                    { build-depends: deepseq                    >= 1.4        && < 1.5    } common directory                  { build-depends: directory                  >= 1.2.2      && < 1.4    }-common doctest                    { build-depends: doctest                    >= 0.16.2     && < 0.17   }+common doctest                    { build-depends: doctest                    >= 0.16.2     && < 0.21   } common doctest-discover           { build-depends: doctest-discover           >= 0.2        && < 0.3    }-common generic-lens               { build-depends: generic-lens               >= 1.2.0.1    && < 1.3    }-common ghc-prim                   { build-depends: ghc-prim                   >= 0.4        && < 0.7    }-common hedgehog                   { build-depends: hedgehog                   >= 0.5        && < 1.1    }+common generic-lens               { build-depends: generic-lens               >= 2.2        && < 2.3    }+common ghc-prim                   { build-depends: ghc-prim                   >= 0.4        && < 0.9    }+common hedgehog                   { build-depends: hedgehog                   >= 0.5        && < 1.2    } common hspec                      { build-depends: hspec                      >= 2.4        && < 3      } common hw-bits                    { build-depends: hw-bits                    >= 0.7.0.2    && < 0.8    }-common hw-ip                      { build-depends: hw-ip                      >= 2.3.4.2    && < 2.5    } common hw-hspec-hedgehog          { build-depends: hw-hspec-hedgehog          >= 0.1.0.4    && < 0.2    }+common hw-ip                      { build-depends: hw-ip                      >= 2.3.4.2    && < 2.5    } common hw-prim                    { build-depends: hw-prim                    >= 0.6.2.14   && < 0.7    } common hw-rankselect              { build-depends: hw-rankselect              >= 0.12.0.2   && < 0.14   } common hw-rankselect-base         { build-depends: hw-rankselect-base         >= 0.3.2.0    && < 0.4    } common hw-simd                    { build-depends: hw-simd                    >= 0.1.1.3    && < 0.2    }-common lens                       { build-depends: lens                       >= 4.15       && < 5      }+common lens                       { build-depends: lens                       >= 4.15       && < 6      } common mmap                       { build-depends: mmap                       >= 0.5.9      && < 0.6    }-common optparse-applicative       { build-depends: optparse-applicative       >= 0.13       && < 0.16   }+common optparse-applicative       { build-depends: optparse-applicative       >= 0.13       && < 0.18   } common resourcet                  { build-depends: resourcet                  >= 1.1        && < 1.3    } common text                       { build-depends: text                       >= 1.2.2      && < 2.0    }-common transformers               { build-depends: transformers               >= 0.4        && < 0.6    }+common transformers               { build-depends: transformers               >= 0.4        && < 0.7    } common vector                     { build-depends: vector                     >= 0.12.0.1   && < 0.13   } common weigh                      { build-depends: weigh                      >= 0.0.6      && < 0.1    } @@ -177,6 +177,7 @@                       , vector                       , weigh   type:                 exitcode-stdio-1.0+  ghc-options:          -threaded -rtsopts -with-rtsopts=-N   main-is:              Space.hs   build-depends:        hw-dsv   hs-source-dirs:       weigh@@ -240,7 +241,7 @@                       , hw-dsv   default-language:     Haskell2010   type:                 exitcode-stdio-1.0-  ghc-options:          -threaded+  ghc-options:          -threaded -rtsopts -with-rtsopts=-N   main-is:              DoctestDriver.hs   HS-Source-Dirs:       doctest   build-tool-depends:   doctest-discover:doctest-discover
src/HaskellWorks/Data/Dsv/Lazy/Cursor.hs view
@@ -11,7 +11,6 @@  import Data.Function import Data.Word-import GHC.Word                                   (Word8) import HaskellWorks.Data.Dsv.Lazy.Cursor.Internal import HaskellWorks.Data.Dsv.Lazy.Cursor.Type import HaskellWorks.Data.Vector.AsVector64s
src/HaskellWorks/Data/Dsv/Lazy/Cursor/Lazy.hs view
@@ -23,6 +23,8 @@ import qualified Data.List            as L import qualified Data.Vector          as DV +{- HLINT ignore "Reduce duplication" -}+ snippet :: DsvCursor -> LBS.ByteString snippet c = LBS.take (len `max` 0) $ LBS.drop posC $ dsvCursorText c   where d = nextField c
src/HaskellWorks/Data/Dsv/Lazy/Cursor/Strict.hs view
@@ -22,8 +22,10 @@ import qualified Data.List            as L import qualified Data.Vector          as DV +{- HLINT ignore "Reduce duplication" -}+ snippet :: DsvCursor -> Int -> BS.ByteString -> BS.ByteString-snippet c offset bs = BS.take (len `max` 0) $ BS.drop posC $ bs+snippet c offset bs = BS.take (len `max` 0) $ BS.drop posC bs   where d = nextField c         posC = fromIntegral (dsvCursorPosition c) - offset         posD = fromIntegral (dsvCursorPosition d) - offset
src/HaskellWorks/Data/Dsv/Strict/Cursor.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE BangPatterns        #-}-{-# LANGUAGE MultiWayIf          #-} {-# LANGUAGE ScopedTypeVariables #-}  module HaskellWorks.Data.Dsv.Strict.Cursor
src/HaskellWorks/Data/Dsv/Strict/Cursor/Internal.hs view
@@ -1,11 +1,10 @@-{-# LANGUAGE ExplicitForAll      #-} {-# LANGUAGE FlexibleContexts    #-} {-# LANGUAGE ScopedTypeVariables #-}  module HaskellWorks.Data.Dsv.Strict.Cursor.Internal where  import Control.Monad.ST-import Data.Bits                                  (popCount)+import Data.Bits                                 (popCount) import Data.Word import HaskellWorks.Data.AtIndex import HaskellWorks.Data.Bits.BitWise@@ -21,7 +20,7 @@ import qualified Data.Vector.Storable.Mutable               as DVSM import qualified HaskellWorks.Data.Dsv.Internal.Char.Word64 as CW -{-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}+{- HLINT ignore "Reduce duplication" -}  makeIndexes :: Word8 -> DVS.Vector Word64 -> (DVS.Vector Word64, DVS.Vector Word64) makeIndexes delimiter ws = case DVS.createT $ makeIndexes' CW.doubleQuote CW.newline (fillWord64 delimiter) ws of
src/HaskellWorks/Data/Dsv/Strict/Cursor/Internal/Reference.hs view
@@ -1,10 +1,9 @@-{-# LANGUAGE ExplicitForAll      #-} {-# LANGUAGE FlexibleContexts    #-} {-# LANGUAGE ScopedTypeVariables #-}  module HaskellWorks.Data.Dsv.Strict.Cursor.Internal.Reference where -import Data.Bits                                  (popCount)+import Data.Bits                                 (popCount) import Data.Word import HaskellWorks.Data.AtIndex import HaskellWorks.Data.Bits.BitWise@@ -18,7 +17,8 @@ import qualified Data.Vector.Storable                       as DVS import qualified HaskellWorks.Data.Dsv.Internal.Char.Word64 as CW -{-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}+{- HLINT ignore "Reduce duplication"  -}+{- HLINT ignore "Redundant guard"     -}  unsafeIndex :: DVS.Vector Word64 -> Int -> Word64 unsafeIndex v i | i < 0                           = error $ "Invalid index: " <> show i <> " for vector sized " <> show (DVS.length v)@@ -181,7 +181,7 @@                 in unsafeIndex u (ui - 1) + fromIntegral (popCount w)  mkDsvIbNlFromStriped :: DVS.Vector Word64 -> DVS.Vector Word64 -> DVS.Vector Word64-mkDsvIbNlFromStriped sv cpcs = DVS.generate ((DVS.length sv) `div` 3) go+mkDsvIbNlFromStriped sv cpcs = DVS.generate (DVS.length sv `div` 3) go   where go :: Int -> Word64         go u = let ui = fromIntegral u in if ui > 1           then  let svi = ui * 2@@ -198,7 +198,7 @@                 in wnl .&. m  mkDsvIbDlFromStriped :: DVS.Vector Word64 -> DVS.Vector Word64 -> DVS.Vector Word64-mkDsvIbDlFromStriped sv cpcs = DVS.generate ((DVS.length sv) `div` 3) go+mkDsvIbDlFromStriped sv cpcs = DVS.generate (DVS.length sv `div` 3) go   where go :: Int -> Word64         go u = let ui = fromIntegral u in if ui > 1           then  let svi = ui * 2
test/HaskellWorks/Data/Dsv/BroadwordSpec.hs view
@@ -12,9 +12,9 @@ import Hedgehog import Test.Hspec -{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}-{-# ANN module ("HLint: ignore Redundant bracket"   :: String) #-}+{- HLINT ignore "Redundant do"        -}+{- HLINT ignore "Reduce duplication"  -}+{- HLINT ignore "Redundant bracket"   -}  spec :: Spec spec = describe "HaskellWorks.Data.Dsv.BroadwordSpec" $ do
test/HaskellWorks/Data/Dsv/Lazy/CursorSpec.hs view
@@ -14,9 +14,9 @@ import qualified HaskellWorks.Data.Dsv.Lazy.Cursor      as SVL import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy as SVLL -{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}-{-# ANN module ("HLint: ignore Redundant bracket"   :: String) #-}+{- HLINT ignore "Redundant do"        -}+{- HLINT ignore "Reduce duplication"  -}+{- HLINT ignore "Redundant bracket"   -}  subjectEmpty, subjectSS, subjectSM, subjectMS, subjectMM :: LBS.ByteString expectedEmpty, expectedSS, expectedSM, expectedMS, expectedMM :: [DV.Vector LBS.ByteString]
test/HaskellWorks/Data/Dsv/Strict/Cursor/InternalSpec.hs view
@@ -8,7 +8,6 @@ import Control.Monad.IO.Class import Data.ByteString                           (ByteString) import Data.Char-import Data.List                                 (isSuffixOf) import HaskellWorks.Data.Bits.PopCount.PopCount1 import HaskellWorks.Data.Dsv.Internal.Char       (pipe) import HaskellWorks.Data.FromByteString@@ -17,6 +16,7 @@ import Test.Hspec  import qualified Data.ByteString                                        as BS+import qualified Data.List                                              as L import qualified Data.Text                                              as T import qualified Data.Text.Encoding                                     as T import qualified Data.Vector.Storable                                   as DVS@@ -27,15 +27,15 @@ import qualified Hedgehog.Range                                         as R import qualified System.Directory                                       as IO -{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}-{-# ANN module ("HLint: ignore Redundant bracket"   :: String) #-}+{- HLINT ignore "Redundant do"        -}+{- HLINT ignore "Reduce duplication"  -}+{- HLINT ignore "Redundant bracket"   -}  spec :: Spec spec = describe "HaskellWorks.Data.Dsv.Strict.Cursor.InternalSpec" $ do   it "Case 1" $ requireTest $ do     entries <- liftIO $ IO.listDirectory "data/bench"-    let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+    let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries     forM_ files $ \file -> do       v <- liftIO $ IO.mmapFromForeignRegion file       let !actual   = DVS.foldr (\a b -> popCount1 a + b) 0 (fst $  SVS.makeIndexes pipe v)@@ -68,7 +68,7 @@     u === expected   it "Case 6" $ requireTest $ do     entries <- liftIO $ IO.listDirectory "data/bench"-    let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+    let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries     forM_ files $ \file -> do       v <- liftIO $ IO.mmapFromForeignRegion file       let !actual   = fst $ SVS.makeIndexes pipe v
test/HaskellWorks/Data/DsvSpec.hs view
@@ -13,9 +13,9 @@  import qualified HaskellWorks.Data.Dsv.Strict.Cursor.Internal.Reference as SVS -{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}-{-# ANN module ("HLint: ignore Redundant bracket"   :: String) #-}+{- HLINT ignore "Redundant do"        -}+{- HLINT ignore "Reduce duplication"  -}+{- HLINT ignore "Redundant bracket"   -}  spec :: Spec spec = describe "HaskellWorks.Data.DsvSpec" $ do
weigh/Space.hs view
@@ -14,7 +14,7 @@ import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy as SVLL import qualified HaskellWorks.Data.Dsv.Strict.Cursor    as SVS -{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}+{- HLINT ignore "Redundant do"        -}  repeatedly :: (a -> Maybe a) -> a -> [a] repeatedly f a = a:case f a of@@ -47,11 +47,7 @@             Right v -> pure v       , action "cassava streaming" $ do           fmap (F.toList . CSS.decode CSS.HasHeader) (LBS.readFile infp) :: IO [Vector ByteString]-      , action "hw-dsv strict" $ do-          v <- loadCsvStrict infp :: IO (Vector (Vector ByteString))-          pure v-      , action "hw-dsv lazy" $ do-          v <- loadCsvLazy infp :: IO [Vector LBS.ByteString]-          pure v+      , action "hw-dsv strict" (loadCsvStrict infp  :: IO (Vector (Vector ByteString)))+      , action "hw-dsv lazy"   (loadCsvLazy infp    :: IO [Vector LBS.ByteString])       ]   return ()