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 +7/−3
- src/HaskellWorks/Data/Cons.hs +94/−0
- src/HaskellWorks/Data/Null.hs +96/−0
- src/HaskellWorks/Data/Ops.hs +30/−0
- src/HaskellWorks/Data/Unsnoc.hs +99/−0
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 #-}