packages feed

hw-prim 0.6.2.24 → 0.6.2.25

raw patch · 5 files changed

+326/−3 lines, 5 filesdep ~basePVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

Dependency ranges changed: base

API changes (from Hackage documentation)

+ HaskellWorks.Data.Cons: class Container v => Cons v
+ HaskellWorks.Data.Cons: cons :: Cons v => Elem v -> v -> v
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Int.Int16)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Int.Int32)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Int.Int64)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Int.Int8)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Types.Int)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Storable.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Vector GHC.Int.Int16)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Vector GHC.Int.Int32)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Vector GHC.Int.Int64)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Vector GHC.Int.Int8)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons (Data.Vector.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons Data.ByteString.Internal.ByteString
+ HaskellWorks.Data.Cons: instance HaskellWorks.Data.Cons.Cons [a]
+ HaskellWorks.Data.Null: class Container a => Null a
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Int.Int16)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Int.Int32)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Int.Int64)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Int.Int8)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Types.Int)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Storable.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Vector GHC.Int.Int16)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Vector GHC.Int.Int32)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Vector GHC.Int.Int64)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Vector GHC.Int.Int8)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null (Data.Vector.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null Data.ByteString.Internal.ByteString
+ HaskellWorks.Data.Null: instance HaskellWorks.Data.Null.Null [a]
+ HaskellWorks.Data.Null: null :: Null a => a -> Bool
+ HaskellWorks.Data.Ops: (<|) :: Cons v => Elem v -> v -> v
+ HaskellWorks.Data.Ops: (><) :: (Semigroup v, Container v) => v -> v -> v
+ HaskellWorks.Data.Ops: (|>) :: Snoc v => v -> Elem v -> v
+ HaskellWorks.Data.Ops: infixl 5 |>
+ HaskellWorks.Data.Ops: infixr 5 ><
+ HaskellWorks.Data.Unsnoc: class Container a where {
+ HaskellWorks.Data.Unsnoc: class Unsnoc v
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Int.Int16)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Int.Int32)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Int.Int64)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Int.Int8)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Types.Int)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Storable.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Vector GHC.Int.Int16)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Vector GHC.Int.Int32)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Vector GHC.Int.Int64)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Vector GHC.Int.Int8)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc (Data.Vector.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc Data.ByteString.Internal.ByteString
+ HaskellWorks.Data.Unsnoc: instance HaskellWorks.Data.Unsnoc.Unsnoc GHC.Base.String
+ HaskellWorks.Data.Unsnoc: type family Elem a;
+ HaskellWorks.Data.Unsnoc: unsnoc :: Unsnoc v => v -> Maybe (Elem v, v)
+ HaskellWorks.Data.Unsnoc: }

Files

hw-prim.cabal view
@@ -1,7 +1,7 @@ cabal-version:  2.2  name:           hw-prim-version:        0.6.2.24+version:        0.6.2.25 synopsis:       Primitive functions and data types description:    Primitive functions and data types. category:       Data@@ -29,14 +29,14 @@  common base                 { build-depends: base                 >= 4          && < 5      } -common QuickCheck           { build-depends: QuickCheck           >= 2.10       && < 2.12   }+common QuickCheck           { build-depends: QuickCheck           >= 2.10       && < 2.14   } common bytestring           { build-depends: bytestring           >= 0.9        && < 0.11   } common criterion            { build-depends: criterion            >= 1.2        && < 1.6    } common directory            { build-depends: directory            >= 1.2        && < 1.4    } common exceptions           { build-depends: exceptions           >= 0.8        && < 0.11   } common ghc-prim             { build-depends: ghc-prim                                       } common hedgehog             { build-depends: hedgehog             >= 0.5        && < 1.1    }-common hspec                { build-depends: hspec                >= 2.4        && < 2.6    }+common hspec                { build-depends: hspec                >= 2.4        && < 2.8    } common hw-hspec-hedgehog    { build-depends: hw-hspec-hedgehog    >= 0.1        && < 0.2    } common mmap                 { build-depends: mmap                 >= 0.5        && < 0.6    } common semigroups           { build-depends: semigroups           >= 0.8.4      && < 0.20   }@@ -67,6 +67,7 @@     HaskellWorks.Data.Char     HaskellWorks.Data.Char.IsChar     HaskellWorks.Data.Concat+    HaskellWorks.Data.Cons     HaskellWorks.Data.Container     HaskellWorks.Data.Decode     HaskellWorks.Data.Drop@@ -78,6 +79,8 @@     HaskellWorks.Data.Head     HaskellWorks.Data.Length     HaskellWorks.Data.Naive+    HaskellWorks.Data.Null+    HaskellWorks.Data.Ops     HaskellWorks.Data.Positioning     HaskellWorks.Data.Product     HaskellWorks.Data.Search@@ -87,6 +90,7 @@     HaskellWorks.Data.TreeCursor     HaskellWorks.Data.Uncons     HaskellWorks.Data.Unsign+    HaskellWorks.Data.Unsnoc     HaskellWorks.Data.Vector.AsVector64     HaskellWorks.Data.Vector.AsVector64ns     HaskellWorks.Data.Vector.AsVector64s
+ src/HaskellWorks/Data/Cons.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies          #-}++module HaskellWorks.Data.Cons+    ( Cons(..)+    ) where++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 => Cons v where+  cons :: Elem v -> v -> v++instance Cons [a] where+  cons = (:)+  {-# INLINE cons #-}++instance Cons BS.ByteString where+  cons = BS.cons+  {-# INLINE cons #-}++instance Cons (DV.Vector Word8) where+  cons = DV.cons+  {-# INLINE cons #-}++instance Cons (DV.Vector Word16) where+  cons = DV.cons+  {-# INLINE cons #-}++instance Cons (DV.Vector Word32) where+  cons = DV.cons+  {-# INLINE cons #-}++instance Cons (DV.Vector Word64) where+  cons = DV.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Word8) where+  cons = DVS.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Word16) where+  cons = DVS.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Word32) where+  cons = DVS.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Word64) where+  cons = DVS.cons+  {-# INLINE cons #-}++instance Cons (DV.Vector Int8) where+  cons = DV.cons+  {-# INLINE cons #-}++instance Cons (DV.Vector Int16) where+  cons = DV.cons+  {-# INLINE cons #-}++instance Cons (DV.Vector Int32) where+  cons = DV.cons+  {-# INLINE cons #-}++instance Cons (DV.Vector Int64) where+  cons = DV.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Int8) where+  cons = DVS.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Int16) where+  cons = DVS.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Int32) where+  cons = DVS.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Int64) where+  cons = DVS.cons+  {-# INLINE cons #-}++instance Cons (DVS.Vector Int) where+  cons = DVS.cons+  {-# INLINE cons #-}
+ src/HaskellWorks/Data/Null.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE FlexibleContexts      #-}+{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies          #-}++module HaskellWorks.Data.Null+    ( Null(..)+    ) where++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 Container a => Null a where+  null :: a -> Bool++instance Null [a] where+  null = L.null+  {-# INLINE null #-}++instance Null BS.ByteString where+  null = BS.null+  {-# INLINE null #-}++instance Null (DV.Vector Word8) where+  null = DV.null+  {-# INLINE null #-}++instance Null (DV.Vector Word16) where+  null = DV.null+  {-# INLINE null #-}++instance Null (DV.Vector Word32) where+  null = DV.null+  {-# INLINE null #-}++instance Null (DV.Vector Word64) where+  null = DV.null+  {-# INLINE null #-}++instance Null (DVS.Vector Word8) where+  null = DVS.null+  {-# INLINE null #-}++instance Null (DVS.Vector Word16) where+  null = DVS.null+  {-# INLINE null #-}++instance Null (DVS.Vector Word32) where+  null = DVS.null+  {-# INLINE null #-}++instance Null (DVS.Vector Word64) where+  null = DVS.null+  {-# INLINE null #-}++instance Null (DV.Vector Int8) where+  null = DV.null+  {-# INLINE null #-}++instance Null (DV.Vector Int16) where+  null = DV.null+  {-# INLINE null #-}++instance Null (DV.Vector Int32) where+  null = DV.null+  {-# INLINE null #-}++instance Null (DV.Vector Int64) where+  null = DV.null+  {-# INLINE null #-}++instance Null (DVS.Vector Int8) where+  null = DVS.null+  {-# INLINE null #-}++instance Null (DVS.Vector Int16) where+  null = DVS.null+  {-# INLINE null #-}++instance Null (DVS.Vector Int32) where+  null = DVS.null+  {-# INLINE null #-}++instance Null (DVS.Vector Int64) where+  null = DVS.null+  {-# INLINE null #-}++instance Null (DVS.Vector Int) where+  null = DVS.null+  {-# INLINE null #-}
+ src/HaskellWorks/Data/Ops.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE Rank2Types      #-}++module HaskellWorks.Data.Ops+  ( (<|)+  , (|>)+  , (><)+  ) where++import Data.Semigroup (Semigroup, (<>))++import qualified HaskellWorks.Data.Cons      as HW+import qualified HaskellWorks.Data.Container as HW+import qualified HaskellWorks.Data.Snoc      as HW++infixr 5 <|, ><++infixl 5 |>++(<|) :: HW.Cons v => HW.Elem v -> v -> v+(<|) = HW.cons+{-# INLINE (<|) #-}++(|>) :: HW.Snoc v => v -> HW.Elem v -> v+(|>) = HW.snoc+{-# INLINE (|>) #-}++(><) :: (Semigroup v, HW.Container v) => v -> v -> v+(><) = (<>)+{-# INLINE (><) #-}
+ src/HaskellWorks/Data/Unsnoc.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies          #-}++module HaskellWorks.Data.Unsnoc+    ( Container(..)+    , Unsnoc(..)+    ) where++import Data.Int+import Data.Maybe+import Data.Word+import HaskellWorks.Data.Container+import Prelude                     hiding (drop)++import qualified Data.ByteString      as BS+import qualified Data.Vector          as DV+import qualified Data.Vector.Storable as DVS++class Unsnoc v where+  unsnoc :: v -> Maybe (Elem v, v)++instance Unsnoc String where+  unsnoc s = case reverse s of+    (x:xs) -> Just (x, reverse xs)+    _      -> Nothing+  {-# INLINE unsnoc   #-}++instance Unsnoc BS.ByteString where+  unsnoc s = if BS.length s == 0 then Nothing else Just (BS.last s, BS.take (BS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DV.Vector Word8) where+  unsnoc s = if DV.length s == 0 then Nothing else Just (DV.last s, DV.take (DV.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DV.Vector Word16) where+  unsnoc s = if DV.length s == 0 then Nothing else Just (DV.last s, DV.take (DV.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DV.Vector Word32) where+  unsnoc s = if DV.length s == 0 then Nothing else Just (DV.last s, DV.take (DV.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DV.Vector Word64) where+  unsnoc s = if DV.length s == 0 then Nothing else Just (DV.last s, DV.take (DV.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Word8) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Word16) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Word32) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Word64) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DV.Vector Int8) where+  unsnoc s = if DV.length s == 0 then Nothing else Just (DV.last s, DV.take (DV.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DV.Vector Int16) where+  unsnoc s = if DV.length s == 0 then Nothing else Just (DV.last s, DV.take (DV.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DV.Vector Int32) where+  unsnoc s = if DV.length s == 0 then Nothing else Just (DV.last s, DV.take (DV.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DV.Vector Int64) where+  unsnoc s = if DV.length s == 0 then Nothing else Just (DV.last s, DV.take (DV.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Int8) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Int16) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Int32) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Int64) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}++instance Unsnoc (DVS.Vector Int) where+  unsnoc s = if DVS.length s == 0 then Nothing else Just (DVS.last s, DVS.take (DVS.length s - 1) s)+  {-# INLINE unsnoc   #-}