packages feed

hw-prim 0.5.0.2 → 0.5.0.3

raw patch · 25 files changed

+160/−141 lines, 25 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ HaskellWorks.Data.AtIndex: atIndexOr :: AtIndex v => Elem v -> v -> Position -> Elem v

Files

bench/Main.hs view
@@ -4,7 +4,6 @@ module Main where  import Criterion.Main-import Data.Monoid import Data.Word import Foreign import HaskellWorks.Data.FromForeignRegion
hw-prim.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: e13d367ccce10eb041455fee1fba2f253b49799a2caf12f1c21cdc05f3fc5f84+-- hash: 7744d3568e3de865cd0c785d38ad2c2519a9b44316d31e88a922d3802c35aa05  name:           hw-prim-version:        0.5.0.2+version:        0.5.0.3 synopsis:       Primitive functions and data types description:    Please see README.md category:       Data
src/HaskellWorks/Data/AtIndex.hs view
@@ -1,24 +1,27 @@-{-# LANGUAGE FlexibleInstances   #-}+{-# LANGUAGE FlexibleInstances     #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies        #-}+{-# LANGUAGE TypeFamilies          #-}  module HaskellWorks.Data.AtIndex     ( Container(..)     , AtIndex(..)     , Length(..)+    , atIndexOr     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Length-import           HaskellWorks.Data.Positioning+import Data.Int+import Data.Word+import HaskellWorks.Data.Length+import HaskellWorks.Data.Positioning +import qualified Data.ByteString          as BS+import qualified Data.Vector              as DV+import qualified Data.Vector.Storable     as DVS+import qualified HaskellWorks.Data.Length as HW+ class Length v => AtIndex v where-  (!!!)   :: v -> Position -> Elem v-  atIndex :: v -> Position -> Elem v+  (!!!)     :: v -> Position -> Elem v+  atIndex   :: v -> Position -> Elem v  instance AtIndex [a] where   (!!!)   v i = v !! fromIntegral i@@ -133,3 +136,7 @@   atIndex v i = DVS.unsafeIndex v (fromIntegral i)   {-# INLINE (!!!)   #-}   {-# INLINE atIndex #-}++atIndexOr :: AtIndex v => Elem v -> v -> Position -> Elem v+atIndexOr d v p = if p < fromIntegral (HW.length v) then v !!! p else d+{-# INLINE atIndexOr #-}
src/HaskellWorks/Data/Char/IsChar.hs view
@@ -2,8 +2,9 @@     ( IsChar(..)     ) where +import Data.Word+ import qualified Data.ByteString.Internal as BI-import           Data.Word  class IsChar c where   toChar :: c -> Char
src/HaskellWorks/Data/Concat.hs view
@@ -6,12 +6,13 @@   ( Concat(..)   ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.List                     as L-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word+import Data.Int+import Data.Word++import qualified Data.ByteString      as BS+import qualified Data.List            as L+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  -- | Class of values that support vector like operations class Concat v where
src/HaskellWorks/Data/Container.hs view
@@ -6,11 +6,12 @@     ( Container(..)     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word+import Data.Int+import Data.Word++import qualified Data.ByteString      as BS+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  class Container a where   type Elem a
src/HaskellWorks/Data/Drop.hs view
@@ -7,15 +7,16 @@     , Drop(..)     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.List                     as L-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container-import           HaskellWorks.Data.Positioning-import           Prelude hiding (drop)+import Data.Int+import Data.Word+import HaskellWorks.Data.Container+import HaskellWorks.Data.Positioning+import Prelude                       hiding (drop)++import qualified Data.ByteString      as BS+import qualified Data.List            as L+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  class Container v => Drop v where   drop :: Count -> v -> v
src/HaskellWorks/Data/Empty.hs view
@@ -7,12 +7,13 @@     ( Empty(..)     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container+import Data.Int+import Data.Word+import HaskellWorks.Data.Container++import qualified Data.ByteString      as BS+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  class Container a => Empty a where   empty :: a
src/HaskellWorks/Data/Filter.hs view
@@ -7,13 +7,14 @@   , Filter(..)   ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.List                     as L-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container+import Data.Int+import Data.Word+import HaskellWorks.Data.Container++import qualified Data.ByteString      as BS+import qualified Data.List            as L+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  -- | Class of values that support vector like operations class Container v => Filter v where
src/HaskellWorks/Data/FromByteString.hs view
@@ -1,15 +1,16 @@-{-# LANGUAGE FlexibleInstances  #-}-{-# LANGUAGE InstanceSigs       #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE InstanceSigs      #-}  module HaskellWorks.Data.FromByteString   ( FromByteString(..)   ) where -import           Data.Bits-import qualified Data.ByteString            as BS-import qualified Data.Vector.Storable       as DVS-import           Data.Word+import Data.Bits+import Data.Word +import qualified Data.ByteString      as BS+import qualified Data.Vector.Storable as DVS+ -- | Class for byte-string-like datastructures class FromByteString a where   -- | Convert a byte string to a value of type @a@@ -20,47 +21,47 @@   fromByteString bs = DVS.unfoldrN (BS.length bs) gen bs     where gen :: BS.ByteString -> Maybe (Word8, BS.ByteString)           gen cs = case BS.uncons cs of-            Just (d, ds)  -> Just (d, ds)-            Nothing       -> Nothing+            Just (d, ds) -> Just (d, ds)+            Nothing      -> Nothing  instance FromByteString (DVS.Vector Word16) where   fromByteString :: BS.ByteString -> DVS.Vector Word16   fromByteString bs = DVS.unfoldrN (BS.length bs `div` 2 + 2) gen bs     where gen :: BS.ByteString -> Maybe (Word16, BS.ByteString)           gen cs = case BS.uncons cs of-            Just (d, ds)  -> gen' 8 (fromIntegral d) ds-            Nothing       -> Nothing+            Just (d, ds) -> gen' 8 (fromIntegral d) ds+            Nothing      -> Nothing           gen' :: Int -> Word16 -> BS.ByteString -> Maybe (Word16, BS.ByteString)           gen' n w cs             | n >= 16   = Just (w, cs)             | otherwise = case BS.uncons cs of-                Just (d, ds)  -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds-                Nothing       -> Just (w, cs)+                Just (d, ds) -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds+                Nothing      -> Just (w, cs)  instance FromByteString (DVS.Vector Word32) where   fromByteString :: BS.ByteString -> DVS.Vector Word32   fromByteString bs = DVS.unfoldrN (BS.length bs `div` 4 + 4) gen bs     where gen :: BS.ByteString -> Maybe (Word32, BS.ByteString)           gen cs = case BS.uncons cs of-            Just (d, ds)  -> gen' 8 (fromIntegral d) ds-            Nothing       -> Nothing+            Just (d, ds) -> gen' 8 (fromIntegral d) ds+            Nothing      -> Nothing           gen' :: Int -> Word32 -> BS.ByteString -> Maybe (Word32, BS.ByteString)           gen' n w cs             | n >= 32   = Just (w, cs)             | otherwise = case BS.uncons cs of-                Just (d, ds)  -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds-                Nothing       -> Just (w, cs)+                Just (d, ds) -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds+                Nothing      -> Just (w, cs)  instance FromByteString (DVS.Vector Word64) where   fromByteString :: BS.ByteString -> DVS.Vector Word64   fromByteString bs = DVS.unfoldrN (BS.length bs `div` 8 + 8) gen bs     where gen :: BS.ByteString -> Maybe (Word64, BS.ByteString)           gen cs = case BS.uncons cs of-            Just (d, ds)  -> gen' 8 (fromIntegral d) ds-            Nothing       -> Nothing+            Just (d, ds) -> gen' 8 (fromIntegral d) ds+            Nothing      -> Nothing           gen' :: Int -> Word64 -> BS.ByteString -> Maybe (Word64, BS.ByteString)           gen' n w cs             | n >= 64   = Just (w, cs)             | otherwise = case BS.uncons cs of-                Just (d, ds)  -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds-                Nothing       -> Just (w, cs)+                Just (d, ds) -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds+                Nothing      -> Just (w, cs)
src/HaskellWorks/Data/Generate.hs view
@@ -7,12 +7,13 @@   , Generate(..)   ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container+import Data.Int+import Data.Word+import HaskellWorks.Data.Container++import qualified Data.ByteString      as BS+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  -- | Class of values that support vector like operations class Container v => Generate v where
src/HaskellWorks/Data/Head.hs view
@@ -7,14 +7,15 @@     , Head(..)     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.List                     as L-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container-import           Prelude hiding (head)+import Data.Int+import Data.Word+import HaskellWorks.Data.Container+import Prelude                     hiding (head)++import qualified Data.ByteString      as BS+import qualified Data.List            as L+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  class Container v => Head v where   head :: v -> Elem v
src/HaskellWorks/Data/Length.hs view
@@ -1,20 +1,21 @@-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies      #-}  module HaskellWorks.Data.Length     ( Container(..)     , Length(..)     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.List                     as L-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container-import           HaskellWorks.Data.Positioning-import           Prelude hiding (length)+import Data.Int+import Data.Word+import HaskellWorks.Data.Container+import HaskellWorks.Data.Positioning+import Prelude                       hiding (length)++import qualified Data.ByteString      as BS+import qualified Data.List            as L+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  class Container v => Length v where   length :: v -> Count
src/HaskellWorks/Data/Positioning.hs view
@@ -9,8 +9,8 @@   , toPosition   ) where -import           Data.Int-import           Data.Word+import Data.Int+import Data.Word  -- | A value representing a count type Count = Word64
src/HaskellWorks/Data/Search.hs view
@@ -1,6 +1,6 @@ module HaskellWorks.Data.Search-    ( binarySearch-    ) where+  ( binarySearch+  ) where  -- | Perform a binary search in the domain of function @f, bounded by the values @p and @q -- to find the least value @v such that: @w <= (f v)
src/HaskellWorks/Data/Snoc.hs view
@@ -6,12 +6,13 @@     ( Snoc(..)     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container+import Data.Int+import Data.Word+import HaskellWorks.Data.Container++import qualified Data.ByteString      as BS+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  class Container v => Snoc v where   snoc :: v -> Elem v -> v
src/HaskellWorks/Data/Take.hs view
@@ -7,14 +7,15 @@     , Take(..)     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import qualified Data.List                     as L-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container-import           HaskellWorks.Data.Positioning+import Data.Int+import Data.Word+import HaskellWorks.Data.Container+import HaskellWorks.Data.Positioning++import qualified Data.ByteString      as BS+import qualified Data.List            as L+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS  class Container v => Take v where   take :: Count -> v -> v
src/HaskellWorks/Data/TreeCursor.hs view
@@ -7,7 +7,7 @@     ( TreeCursor(..)     ) where -import           HaskellWorks.Data.Positioning+import HaskellWorks.Data.Positioning  class TreeCursor k where   firstChild  :: k -> Maybe k
src/HaskellWorks/Data/Uncons.hs view
@@ -7,23 +7,24 @@     , Uncons(..)     ) where -import qualified Data.ByteString               as BS-import           Data.Int-import           Data.Maybe-import qualified Data.Vector                   as DV-import qualified Data.Vector.Storable          as DVS-import           Data.Word-import           HaskellWorks.Data.Container-import           HaskellWorks.Data.Drop-import           Prelude hiding (drop)+import Data.Int+import Data.Maybe+import Data.Word+import HaskellWorks.Data.Container+import HaskellWorks.Data.Drop+import Prelude                     hiding (drop) +import qualified Data.ByteString      as BS+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS+ class Drop v => Uncons v where   uncons :: v -> Maybe (Elem v, v)  instance Uncons String where   uncons s = case s of-    (x:xs)  -> Just (x, xs)-    _       -> Nothing+    (x:xs) -> Just (x, xs)+    _      -> Nothing   {-# INLINE uncons   #-}  instance Uncons BS.ByteString where
src/HaskellWorks/Data/Vector/AsVector64.hs view
@@ -3,8 +3,9 @@   ( AsVector64(..)   ) where +import Data.Word+ import qualified Data.Vector.Storable as DVS-import           Data.Word  class AsVector64 a where   asVector64 :: a -> DVS.Vector Word64
src/HaskellWorks/Data/Vector/BoxedVectorLike.hs view
@@ -6,9 +6,10 @@   ( BoxedVectorLike(..)   ) where -import qualified Data.Vector      as DV-import           Data.Word-import           Foreign.Storable+import Data.Word+import Foreign.Storable++import qualified Data.Vector as DV  -- | Class of values that support boxed vector like operations class BoxedVectorLike v e where
src/HaskellWorks/Data/Vector/StorableVectorLike.hs view
@@ -6,9 +6,10 @@   ( StorableVectorLike(..)   ) where +import Data.Word+import Foreign.Storable+ import qualified Data.Vector.Storable as DVS-import           Data.Word-import           Foreign.Storable  -- | Class of values that support storable vector like operations class StorableVectorLike v e where
test/HaskellWorks/Data/FromByteStringSpec.hs view
@@ -1,14 +1,15 @@ {-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}-{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedLists     #-}+{-# LANGUAGE ScopedTypeVariables #-}  module HaskellWorks.Data.FromByteStringSpec (spec) where -import qualified Data.ByteString                  as BS-import qualified Data.Vector.Storable             as DVS-import           Data.Word-import           HaskellWorks.Data.FromByteString-import           Test.Hspec+import Data.Word+import HaskellWorks.Data.FromByteString+import Test.Hspec++import qualified Data.ByteString      as BS+import qualified Data.Vector.Storable as DVS  {-# ANN module ("HLint: Ignore Redundant do" :: String) #-} 
test/HaskellWorks/Data/FromForeignRegionSpec.hs view
@@ -9,12 +9,8 @@  import Control.Monad.IO.Class import Data.Word-import Data.Word-import HaskellWorks.Data.FromByteString-import HaskellWorks.Data.FromForeignRegion import HaskellWorks.Hspec.Hedgehog import Hedgehog-import Hedgehog.Internal.Gen import Test.Hspec  import qualified Data.ByteString                     as BS
test/HaskellWorks/Data/SearchSpec.hs view
@@ -2,8 +2,8 @@  module HaskellWorks.Data.SearchSpec (spec) where -import           HaskellWorks.Data.Search-import           Test.Hspec+import HaskellWorks.Data.Search+import Test.Hspec  {-# ANN module ("HLint: Ignore Redundant do" :: String) #-}