packages feed

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 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