hw-prim 0.1.0.2 → 0.1.0.3
raw patch · 4 files changed
+97/−41 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- HaskellWorks.Data.IndexedSeq: vSnoc :: Seq v => v -> Elem v -> v
- HaskellWorks.Data.Seq: vSnoc :: Seq v => v -> Elem v -> v
- HaskellWorks.Data.Vector.VectorLike: vSnoc :: Seq v => v -> Elem v -> v
+ HaskellWorks.Data.Snoc: class Seq v => Snoc v
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Int.Int16)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Int.Int32)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Int.Int64)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Int.Int8)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Types.Int)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Storable.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Vector GHC.Int.Int16)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Vector GHC.Int.Int32)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Vector GHC.Int.Int64)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Vector GHC.Int.Int8)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc (Data.Vector.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc Data.ByteString.Internal.ByteString
+ HaskellWorks.Data.Snoc: instance HaskellWorks.Data.Snoc.Snoc GHC.Base.String
+ HaskellWorks.Data.Snoc: vSnoc :: Snoc v => v -> Elem v -> v
- HaskellWorks.Data.Vector.VectorLike: class IndexedSeq v => VectorLike v
+ HaskellWorks.Data.Vector.VectorLike: class (IndexedSeq v, Snoc v) => VectorLike v
Files
- hw-prim.cabal +2/−1
- src/HaskellWorks/Data/Seq.hs +0/−39
- src/HaskellWorks/Data/Snoc.hs +93/−0
- src/HaskellWorks/Data/Vector/VectorLike.hs +2/−1
hw-prim.cabal view
@@ -1,5 +1,5 @@ name: hw-prim-version: 0.1.0.2+version: 0.1.0.3 synopsis: Primitive functions and data types description: Please see README.md homepage: http://github.com/haskell-works/hw-prim#readme@@ -34,6 +34,7 @@ , HaskellWorks.Data.Positioning , HaskellWorks.Data.Search , HaskellWorks.Data.Seq+ , HaskellWorks.Data.Snoc , HaskellWorks.Data.TreeCursor , HaskellWorks.Data.Vector.BoxedVectorLike , HaskellWorks.Data.Vector.StorableVectorLike
src/HaskellWorks/Data/Seq.hs view
@@ -19,7 +19,6 @@ vLength :: v -> Count vEnd :: v -> Position vEnd = fromIntegral . vLength- vSnoc :: v -> Elem v -> v vDrop :: Count -> v -> v vTake :: Count -> v -> v vUncons :: v -> Maybe (Elem v, v)@@ -29,7 +28,6 @@ vEmpty = "" vLength = Count . fromIntegral . length vEnd = fromIntegral . vLength- vSnoc v c = v ++ [c] vDrop = drop . fromIntegral vTake = take . fromIntegral vUncons s = case s of@@ -39,7 +37,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -50,7 +47,6 @@ vEmpty = BS.empty vLength = Count . fromIntegral . BS.length vEnd = fromIntegral . vLength- vSnoc = BS.snoc vDrop = BS.drop . fromIntegral vTake = BS.take . fromIntegral vUncons = BS.uncons@@ -58,7 +54,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -69,7 +64,6 @@ vEmpty = DV.empty vLength = Count . fromIntegral . DV.length vEnd = fromIntegral . vLength- vSnoc = DV.snoc vDrop = DV.drop . fromIntegral vTake = DV.take . fromIntegral vUncons s = if DV.length s == 0 then Nothing else Just (DV.head s, vDrop 1 s)@@ -77,7 +71,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -88,7 +81,6 @@ vEmpty = DV.empty vLength = Count . fromIntegral . DV.length vEnd = fromIntegral . vLength- vSnoc = DV.snoc vDrop = DV.drop . fromIntegral vTake = DV.take . fromIntegral vUncons s = if DV.length s == 0 then Nothing else Just (DV.head s, vDrop 1 s)@@ -96,7 +88,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -107,7 +98,6 @@ vEmpty = DV.empty vLength = Count . fromIntegral . DV.length vEnd = fromIntegral . vLength- vSnoc = DV.snoc vDrop = DV.drop . fromIntegral vTake = DV.take . fromIntegral vUncons s = if DV.length s == 0 then Nothing else Just (DV.head s, vDrop 1 s)@@ -115,7 +105,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -126,7 +115,6 @@ vEmpty = DV.empty vLength = Count . fromIntegral . DV.length vEnd = fromIntegral . vLength- vSnoc = DV.snoc vDrop = DV.drop . fromIntegral vTake = DV.take . fromIntegral vUncons s = if DV.length s == 0 then Nothing else Just (DV.head s, vDrop 1 s)@@ -134,7 +122,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -145,7 +132,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -153,7 +139,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -164,7 +149,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -172,7 +156,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -183,7 +166,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -191,7 +173,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -202,7 +183,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -210,7 +190,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -221,7 +200,6 @@ vEmpty = DV.empty vLength = Count . fromIntegral . DV.length vEnd = fromIntegral . vLength- vSnoc = DV.snoc vDrop = DV.drop . fromIntegral vTake = DV.take . fromIntegral vUncons s = if DV.length s == 0 then Nothing else Just (DV.head s, vDrop 1 s)@@ -229,7 +207,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -240,7 +217,6 @@ vEmpty = DV.empty vLength = Count . fromIntegral . DV.length vEnd = fromIntegral . vLength- vSnoc = DV.snoc vDrop = DV.drop . fromIntegral vTake = DV.take . fromIntegral vUncons s = if DV.length s == 0 then Nothing else Just (DV.head s, vDrop 1 s)@@ -248,7 +224,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -259,7 +234,6 @@ vEmpty = DV.empty vLength = Count . fromIntegral . DV.length vEnd = fromIntegral . vLength- vSnoc = DV.snoc vDrop = DV.drop . fromIntegral vTake = DV.take . fromIntegral vUncons s = if DV.length s == 0 then Nothing else Just (DV.head s, vDrop 1 s)@@ -267,7 +241,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -278,7 +251,6 @@ vEmpty = DV.empty vLength = Count . fromIntegral . DV.length vEnd = fromIntegral . vLength- vSnoc = DV.snoc vDrop = DV.drop . fromIntegral vTake = DV.take . fromIntegral vUncons s = if DV.length s == 0 then Nothing else Just (DV.head s, vDrop 1 s)@@ -286,7 +258,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -297,7 +268,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -305,7 +275,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -316,7 +285,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -324,7 +292,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -335,7 +302,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -343,7 +309,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -354,7 +319,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -362,7 +326,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}@@ -373,7 +336,6 @@ vEmpty = DVS.empty vLength = Count . fromIntegral . DVS.length vEnd = fromIntegral . vLength- vSnoc = DVS.snoc vDrop = DVS.drop . fromIntegral vTake = DVS.take . fromIntegral vUncons s = if DVS.length s == 0 then Nothing else Just (DVS.head s, vDrop 1 s)@@ -381,7 +343,6 @@ {-# INLINE vEmpty #-} {-# INLINE vLength #-} {-# INLINE vEnd #-}- {-# INLINE vSnoc #-} {-# INLINE vDrop #-} {-# INLINE vTake #-} {-# INLINE vUncons #-}
+ src/HaskellWorks/Data/Snoc.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies #-}++module HaskellWorks.Data.Snoc+ ( 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.Seq++class Seq v => Snoc v where+ vSnoc :: v -> Elem v -> v++instance Snoc String where+ vSnoc v c = v ++ [c]+ {-# INLINE vSnoc #-}++instance Snoc BS.ByteString where+ vSnoc = BS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DV.Vector Word8) where+ vSnoc = DV.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DV.Vector Word16) where+ vSnoc = DV.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DV.Vector Word32) where+ vSnoc = DV.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DV.Vector Word64) where+ vSnoc = DV.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Word8) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Word16) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Word32) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Word64) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DV.Vector Int8) where+ vSnoc = DV.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DV.Vector Int16) where+ vSnoc = DV.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DV.Vector Int32) where+ vSnoc = DV.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DV.Vector Int64) where+ vSnoc = DV.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Int8) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Int16) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Int32) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Int64) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}++instance Snoc (DVS.Vector Int) where+ vSnoc = DVS.snoc+ {-# INLINE vSnoc #-}
src/HaskellWorks/Data/Vector/VectorLike.hs view
@@ -14,9 +14,10 @@ import qualified Data.Vector.Storable as DVS import Data.Word import HaskellWorks.Data.IndexedSeq+import HaskellWorks.Data.Snoc -- | Class of values that support vector like operations-class IndexedSeq v => VectorLike v where+class (IndexedSeq v, Snoc v) => VectorLike v where vConcat :: [v] -> v vFilter :: (Elem v -> Bool) -> v -> v vGenerate :: Int -> (Int -> Elem v) -> v