vector-sized 1.2.0.1 → 1.4.0.0
raw patch · 10 files changed
+77/−58 lines, 10 filesdep +binarydep ~basedep ~hashable
Dependencies added: binary
Dependency ranges changed: base, hashable
Files
- changelog.md +11/−0
- default.nix +8/−0
- shell.nix +2/−1
- src/Data/Vector/Generic/Mutable/Sized/Internal.hs +1/−3
- src/Data/Vector/Generic/Sized.hs +22/−20
- src/Data/Vector/Generic/Sized/Internal.hs +1/−3
- src/Data/Vector/Sized.hs +8/−8
- src/Data/Vector/Storable/Sized.hs +8/−8
- src/Data/Vector/Unboxed/Sized.hs +8/−8
- vector-sized.cabal +8/−7
changelog.md view
@@ -1,5 +1,16 @@ # Change Log +## [1.4.0.0] - 2019-09-12++- Remove Generic instance, see+ https://github.com/expipiplus1/vector-sized/issues/79+- Add Binary instance+- Loosen bounds on dependencies++## [1.3.0.0] - 2019-05-28++- Correct type of accumulating fold functions+ ## [1.2.0.1] - 2019-05-22 - Loosen upper bounds on dependencies
default.nix view
@@ -1,5 +1,6 @@ { pkgs ? import <nixpkgs> {} , compiler ? "ghc864"+, hoogle ? true }: let src = pkgs.nix-gitignore.gitignoreSource [] ./.;@@ -8,6 +9,9 @@ haskellPackages = with pkgs.haskell.lib; pkgs.haskell.packages.${compiler}.override { overrides = self: super: {+ } // pkgs.lib.optionalAttrs hoogle {+ ghc = super.ghc // { withPackages = super.ghc.withHoogle; };+ ghcWithPackages = self.ghc.withPackages; }; }; @@ -22,6 +26,10 @@ # cabal2nix envWithExtras = pkgs.lib.overrideDerivation drv.env (attrs: { buildInputs = attrs.buildInputs ++ extraEnvPackages;+ } // pkgs.lib.optionalAttrs hoogle {+ shellHook = attrs.shellHook + ''+ export HIE_HOOGLE_DATABASE="$(cat $(which hoogle) | sed -n -e 's|.*--database \(.*\.hoo\).*|\1|p')"+ ''; }); in
shell.nix view
@@ -1,5 +1,6 @@ { pkgs ? import <nixpkgs> {} , compiler ? "ghc864"+, hoogle ? true }: -(import ./default.nix { inherit pkgs compiler; }).env+(import ./default.nix { inherit pkgs compiler hoogle; }).env
src/Data/Vector/Generic/Mutable/Sized/Internal.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE KindSignatures #-} {-# OPTIONS_HADDOCK not-home #-}@@ -10,7 +9,6 @@ ) where -import GHC.Generics ( Generic ) import GHC.TypeLits import Control.DeepSeq ( NFData ) import Data.Data@@ -21,4 +19,4 @@ -- Be careful when using the constructor here to not construct sized vectors -- which have a different length than that specified in the type parameter! newtype MVector v (n :: Nat) s a = MVector (v s a)- deriving ( Generic, Typeable, Data, Storable, NFData )+ deriving ( Typeable, Data, Storable, NFData )
src/Data/Vector/Generic/Sized.hs view
@@ -1,11 +1,7 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE ExistentialQuantification #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE KindSignatures #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE RankNTypes #-}@@ -254,11 +250,13 @@ import qualified Data.Vector.Unboxed as Unboxed import qualified Data.Vector.Generic.Mutable.Sized as SVGM import Data.Vector.Generic.Mutable.Sized.Internal+import Data.Binary import GHC.TypeLits import Data.Bifunctor import Data.Finite import Data.Finite.Internal import Data.Proxy+import Control.Monad (mzero) import Control.Monad.Primitive import Foreign.Storable import Data.Data@@ -1620,23 +1618,23 @@ {-# inline postscanl' #-} -- | /O(n)/ Haskell-style scan.-scanl :: (VG.Vector v a, VG.Vector v b) => (a -> b -> a) -> a -> Vector v n b -> Vector v n a-scanl f z = withVectorUnsafe (VG.scanl f z )+scanl :: (VG.Vector v a, VG.Vector v b) => (a -> b -> a) -> a -> Vector v n b -> Vector v (1+n) a+scanl f z (Vector v) = Vector (VG.scanl f z v) {-# inline scanl #-} -- | /O(n)/ Haskell-style scan with strict accumulator.-scanl' :: (VG.Vector v a, VG.Vector v b) => (a -> b -> a) -> a -> Vector v n b -> Vector v n a-scanl' f z = withVectorUnsafe (VG.scanl' f z )+scanl' :: (VG.Vector v a, VG.Vector v b) => (a -> b -> a) -> a -> Vector v n b -> Vector v (1+n) a+scanl' f z (Vector v) = Vector (VG.scanl' f z v) {-# inline scanl' #-} -- | /O(n)/ Scan over a non-empty vector.-scanl1 :: VG.Vector v a => (a -> a -> a) -> Vector v (n+1) a -> Vector v (n+1) a-scanl1 f = withVectorUnsafe (VG.scanl1 f )+scanl1 :: VG.Vector v a => (a -> a -> a) -> Vector v (1+n) a -> Vector v (2+n) a+scanl1 f (Vector v) = Vector (VG.scanl1 f v) {-# inline scanl1 #-} -- | /O(n)/ Scan over a non-empty vector with a strict accumulator.-scanl1' :: VG.Vector v a => (a -> a -> a) -> Vector v (n+1) a -> Vector v (n+1) a-scanl1' f = withVectorUnsafe (VG.scanl1' f )+scanl1' :: VG.Vector v a => (a -> a -> a) -> Vector v (1+n) a -> Vector v (2+n) a+scanl1' f (Vector v) = Vector (VG.scanl1' f v) {-# inline scanl1' #-} -- | /O(n)/ Right-to-left prescan.@@ -1660,24 +1658,24 @@ {-# inline postscanr' #-} -- | /O(n)/ Right-to-left Haskell-style scan.-scanr :: (VG.Vector v a, VG.Vector v b) => (a -> b -> b) -> b -> Vector v n a -> Vector v n b-scanr f z = withVectorUnsafe (VG.scanr f z )+scanr :: (VG.Vector v a, VG.Vector v b) => (a -> b -> b) -> b -> Vector v n a -> Vector v (n+1) b+scanr f z (Vector v) = Vector (VG.scanr f z v) {-# inline scanr #-} -- | /O(n)/ Right-to-left Haskell-style scan with strict accumulator.-scanr' :: (VG.Vector v a, VG.Vector v b) => (a -> b -> b) -> b -> Vector v n a -> Vector v n b-scanr' f z = withVectorUnsafe (VG.scanr' f z )+scanr' :: (VG.Vector v a, VG.Vector v b) => (a -> b -> b) -> b -> Vector v n a -> Vector v (n+1) b+scanr' f z (Vector v) = Vector (VG.scanr' f z v) {-# inline scanr' #-} -- | /O(n)/ Right-to-left scan over a non-empty vector.-scanr1 :: VG.Vector v a => (a -> a -> a) -> Vector v (n+1) a -> Vector v (n+1) a-scanr1 f = withVectorUnsafe (VG.scanr1 f )+scanr1 :: VG.Vector v a => (a -> a -> a) -> Vector v (n+1) a -> Vector v (n+2) a+scanr1 f (Vector v) = Vector (VG.scanr1 f v) {-# inline scanr1 #-} -- | /O(n)/ Right-to-left scan over a non-empty vector with a strict -- accumulator.-scanr1' :: VG.Vector v a => (a -> a -> a) -> Vector v (n+1) a -> Vector v (n+1) a-scanr1' f = withVectorUnsafe (VG.scanr1' f )+scanr1' :: VG.Vector v a => (a -> a -> a) -> Vector v (n+1) a -> Vector v (n+2) a+scanr1' f (Vector v) = Vector (VG.scanr1' f v) {-# inline scanr1' #-} @@ -1928,3 +1926,7 @@ asinh = map asinh acosh = map acosh atanh = map atanh++instance (VG.Vector v a, Binary a, KnownNat n) => Binary (Vector v n a) where+ get = replicateM Data.Binary.get + put = mapM_ put
src/Data/Vector/Generic/Sized/Internal.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}@@ -41,7 +40,6 @@ , unsafeRangeSize ) )-import GHC.Generics ( Generic ) import GHC.TypeLits ( Nat ) -- | A wrapper to tag vectors with a type level length.@@ -49,7 +47,7 @@ -- Be careful when using the constructor here to not construct sized vectors -- which have a different length than that specified in the type parameter! newtype Vector v (n :: Nat) a = Vector (v a)- deriving ( Show, Eq, Ord, Functor, Foldable, Traversable, NFData, Generic+ deriving ( Show, Eq, Ord, Functor, Foldable, Traversable, NFData , Show1, Eq1, Ord1 , Data, Typeable )
src/Data/Vector/Sized.hs view
@@ -1364,22 +1364,22 @@ {-# inline postscanl' #-} -- | /O(n)/ Haskell-style scan.-scanl :: (a -> b -> a) -> a -> Vector n b -> Vector n a+scanl :: (a -> b -> a) -> a -> Vector n b -> Vector (1+n) a scanl = V.scanl {-# inline scanl #-} -- | /O(n)/ Haskell-style scan with strict accumulator.-scanl' :: (a -> b -> a) -> a -> Vector n b -> Vector n a+scanl' :: (a -> b -> a) -> a -> Vector n b -> Vector (1+n) a scanl' = V.scanl' {-# inline scanl' #-} -- | /O(n)/ Scan over a non-empty vector.-scanl1 :: (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanl1 :: (a -> a -> a) -> Vector (1+n) a -> Vector (2+n) a scanl1 = V.scanl1 {-# inline scanl1 #-} -- | /O(n)/ Scan over a non-empty vector with a strict accumulator.-scanl1' :: (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanl1' :: (a -> a -> a) -> Vector (1+n) a -> Vector (2+n) a scanl1' = V.scanl1' {-# inline scanl1' #-} @@ -1404,23 +1404,23 @@ {-# inline postscanr' #-} -- | /O(n)/ Right-to-left Haskell-style scan.-scanr :: (a -> b -> b) -> b -> Vector n a -> Vector n b+scanr :: (a -> b -> b) -> b -> Vector n a -> Vector (n+1) b scanr = V.scanr {-# inline scanr #-} -- | /O(n)/ Right-to-left Haskell-style scan with strict accumulator.-scanr' :: (a -> b -> b) -> b -> Vector n a -> Vector n b+scanr' :: (a -> b -> b) -> b -> Vector n a -> Vector (n+1) b scanr' = V.scanr' {-# inline scanr' #-} -- | /O(n)/ Right-to-left scan over a non-empty vector.-scanr1 :: (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanr1 :: (a -> a -> a) -> Vector (n+1) a -> Vector (n+2) a scanr1 = V.scanr1 {-# inline scanr1 #-} -- | /O(n)/ Right-to-left scan over a non-empty vector with a strict -- accumulator.-scanr1' :: (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanr1' :: (a -> a -> a) -> Vector (n+1) a -> Vector (n+2) a scanr1' = V.scanr1' {-# inline scanr1' #-}
src/Data/Vector/Storable/Sized.hs view
@@ -1435,22 +1435,22 @@ {-# inline postscanl' #-} -- | /O(n)/ Haskell-style scan.-scanl :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector n b -> Vector n a+scanl :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector n b -> Vector (1+n) a scanl = V.scanl {-# inline scanl #-} -- | /O(n)/ Haskell-style scan with strict accumulator.-scanl' :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector n b -> Vector n a+scanl' :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector n b -> Vector (1+n) a scanl' = V.scanl' {-# inline scanl' #-} -- | /O(n)/ Scan over a non-empty vector.-scanl1 :: Storable a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanl1 :: Storable a => (a -> a -> a) -> Vector (1+n) a -> Vector (2+n) a scanl1 = V.scanl1 {-# inline scanl1 #-} -- | /O(n)/ Scan over a non-empty vector with a strict accumulator.-scanl1' :: Storable a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanl1' :: Storable a => (a -> a -> a) -> Vector (1+n) a -> Vector (2+n) a scanl1' = V.scanl1' {-# inline scanl1' #-} @@ -1475,23 +1475,23 @@ {-# inline postscanr' #-} -- | /O(n)/ Right-to-left Haskell-style scan.-scanr :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector n a -> Vector n b+scanr :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector n a -> Vector (n+1) b scanr = V.scanr {-# inline scanr #-} -- | /O(n)/ Right-to-left Haskell-style scan with strict accumulator.-scanr' :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector n a -> Vector n b+scanr' :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector n a -> Vector (n+1) b scanr' = V.scanr' {-# inline scanr' #-} -- | /O(n)/ Right-to-left scan over a non-empty vector.-scanr1 :: Storable a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanr1 :: Storable a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+2) a scanr1 = V.scanr1 {-# inline scanr1 #-} -- | /O(n)/ Right-to-left scan over a non-empty vector with a strict -- accumulator.-scanr1' :: Storable a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanr1' :: Storable a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+2) a scanr1' = V.scanr1' {-# inline scanr1' #-}
src/Data/Vector/Unboxed/Sized.hs view
@@ -1433,22 +1433,22 @@ {-# inline postscanl' #-} -- | /O(n)/ Haskell-style scan.-scanl :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector n b -> Vector n a+scanl :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector n b -> Vector (1+n) a scanl = V.scanl {-# inline scanl #-} -- | /O(n)/ Haskell-style scan with strict accumulator.-scanl' :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector n b -> Vector n a+scanl' :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector n b -> Vector (1+n) a scanl' = V.scanl' {-# inline scanl' #-} -- | /O(n)/ Scan over a non-empty vector.-scanl1 :: Unbox a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanl1 :: Unbox a => (a -> a -> a) -> Vector (1+n) a -> Vector (2+n) a scanl1 = V.scanl1 {-# inline scanl1 #-} -- | /O(n)/ Scan over a non-empty vector with a strict accumulator.-scanl1' :: Unbox a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanl1' :: Unbox a => (a -> a -> a) -> Vector (1+n) a -> Vector (2+n) a scanl1' = V.scanl1' {-# inline scanl1' #-} @@ -1473,23 +1473,23 @@ {-# inline postscanr' #-} -- | /O(n)/ Right-to-left Haskell-style scan.-scanr :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector n a -> Vector n b+scanr :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector n a -> Vector (n+1) b scanr = V.scanr {-# inline scanr #-} -- | /O(n)/ Right-to-left Haskell-style scan with strict accumulator.-scanr' :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector n a -> Vector n b+scanr' :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector n a -> Vector (n+1) b scanr' = V.scanr' {-# inline scanr' #-} -- | /O(n)/ Right-to-left scan over a non-empty vector.-scanr1 :: Unbox a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanr1 :: Unbox a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+2) a scanr1 = V.scanr1 {-# inline scanr1 #-} -- | /O(n)/ Right-to-left scan over a non-empty vector with a strict -- accumulator.-scanr1' :: Unbox a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+1) a+scanr1' :: Unbox a => (a -> a -> a) -> Vector (n+1) a -> Vector (n+2) a scanr1' = V.scanr1' {-# inline scanr1' #-}
vector-sized.cabal view
@@ -1,11 +1,13 @@--- This file has been generated from package.yaml by hpack version 0.27.0.+cabal-version: 1.12++-- This file has been generated from package.yaml by hpack version 0.31.2. -- -- see: https://github.com/sol/hpack ----- hash: 9e10d73204f28676f1b2ea3f9f268f3bc030536ef316caacf208ba554a7d0e14+-- hash: a6e3b4ce977d92b06ce23ff21c540ce53032a023b9b0f55abcbefbe0e68786ac name: vector-sized-version: 1.2.0.1+version: 1.4.0.0 synopsis: Size tagged vectors description: Please see README.md category: Data@@ -17,12 +19,10 @@ license: BSD3 license-file: LICENSE build-type: Simple-cabal-version: >= 1.10- extra-source-files:+ readme.md changelog.md default.nix- readme.md shell.nix source-repository head@@ -48,11 +48,12 @@ build-depends: adjunctions >=4.3 && <4.5 , base >=4.9 && <5+ , binary >=0.8.3.0 , comonad >=4 && <6 , deepseq >=1.1 && <1.5 , distributive >=0.5 && <0.7 , finite-typelits >=0.1- , hashable >=1.2.4.0 && <1.3+ , hashable >=1.2.4.0 , indexed-list-literals >=0.2.0.0 , primitive >=0.5 && <0.8 , vector >=0.11 && <0.13