vector-instances 3.3.1 → 3.4
raw patch · 4 files changed
+158/−9 lines, 4 filesdep +hashabledep ~vectornew-uploader
Dependencies added: hashable
Dependency ranges changed: vector
Files
- .travis.yml +106/−2
- CHANGELOG.markdown +5/−0
- src/Data/Vector/Instances.hs +28/−5
- vector-instances.cabal +19/−2
.travis.yml view
@@ -1,8 +1,112 @@-language: haskell+# This file has been generated -- see https://github.com/hvr/multi-ghc-travis+language: c+sudo: false++cache:+ directories:+ - $HOME/.cabsnap+ - $HOME/.cabal/packages++before_cache:+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar++matrix:+ include:+ - env: CABALVER=1.18 GHCVER=7.0.4+ compiler: ": #GHC 7.0.4"+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.0.4], sources: [hvr-ghc]}}+ - env: CABALVER=1.18 GHCVER=7.2.2+ compiler: ": #GHC 7.2.2"+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.2.2], sources: [hvr-ghc]}}+ - env: CABALVER=1.18 GHCVER=7.4.2+ compiler: ": #GHC 7.4.2"+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.4.2], sources: [hvr-ghc]}}+ - env: CABALVER=1.18 GHCVER=7.6.3+ compiler: ": #GHC 7.6.3"+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.6.3], sources: [hvr-ghc]}}+ - env: CABALVER=1.18 GHCVER=7.8.4+ compiler: ": #GHC 7.8.4"+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4], sources: [hvr-ghc]}}+ - env: CABALVER=1.22 GHCVER=7.10.3+ compiler: ": #GHC 7.10.3"+ addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}}+ - env: CABALVER=1.24 GHCVER=8.0.2+ compiler: ": #GHC 8.0.2"+ addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}}+ - env: CABALVER=1.24 GHCVER=8.0.2 CABALOPTS="-f-hashable"+ compiler: ": #GHC 8.0.2 -hashable"+ addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}}+ - env: CABALVER=head GHCVER=head+ compiler: ": #GHC head"+ addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}}++ allow_failures:+ - env: CABALVER=1.18 GHCVER=7.0.4+ - env: CABALVER=1.18 GHCVER=7.2.2+ - env: CABALVER=head GHCVER=head++before_install:+ - unset CC+ - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH++install:+ - cabal --version+ - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"+ - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];+ then+ zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >+ $HOME/.cabal/packages/hackage.haskell.org/00-index.tar;+ fi+ - travis_retry cabal update -v+ - sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config+ - cabal install $CABALOPTS --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt+ - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt++# check whether current requested install-plan matches cached package-db snapshot+ - if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;+ then+ echo "cabal build-cache HIT";+ rm -rfv .ghc;+ cp -a $HOME/.cabsnap/ghc $HOME/.ghc;+ cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;+ else+ echo "cabal build-cache MISS";+ rm -rf $HOME/.cabsnap;+ mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;+ cabal install $CABALOPTS --only-dependencies --enable-tests --enable-benchmarks;+ fi++# snapshot package-db on cache miss+ - if [ ! -d $HOME/.cabsnap ];+ then+ echo "snapshotting package-db to build-cache";+ mkdir $HOME/.cabsnap;+ cp -a $HOME/.ghc $HOME/.cabsnap/ghc;+ cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;+ fi++# Here starts the actual work to be performed for the package under test;+# any command which exits with a non-zero exit code causes the build to fail.+script:+ - if [ -f configure.ac ]; then autoreconf -i; fi+ - cabal configure $CABALOPTS --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging+ - cabal build # this builds all libraries and executables (including tests/benchmarks)+ - cabal test+ - cabal sdist # tests that a source-distribution can be generated++# Check that the resulting source distribution can be built & installed.+# If there are no other `.tar.gz` files in `dist`, this can be even simpler:+# `cabal install --force-reinstalls dist/*-*.tar.gz`+ - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&+ (cd dist && cabal install $CABALOPTS --force-reinstalls "$SRC_TGZ")+ notifications: irc: channels: - "irc.freenode.org#haskell-lens" skip_join: true template:- - "\x0313vector-instances\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"+ - "\x0313pointed\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"++# EOF
CHANGELOG.markdown view
@@ -1,3 +1,8 @@+3.4+-----+* Support `vector-0.12`+* Added `Hashable` instances.+ 3.3.1 ----- * Support `vector` 0.11
src/Data/Vector/Instances.hs view
@@ -18,6 +18,9 @@ import Control.Applicative import Control.Monad import Data.Semigroup+#ifdef MIN_VERSION_hashable+import Data.Hashable (Hashable(..))+#endif import Data.Key import Data.Functor.Bind import Data.Functor.Extend@@ -54,7 +57,7 @@ {-# INLINE zipWithKey #-} instance Indexable Vector where- index = (!)+ index = (Vector.!) {-# INLINE index #-} instance Lookup Vector where@@ -93,10 +96,6 @@ v >>- f = Vector.concatMap f v {-# INLINE (>>-) #-} -instance Semigroup (Vector a) where- (<>) = (++)- {-# INLINE (<>) #-}- instance Alt Vector where (<!>) = (++) {-# INLINE (<!>) #-}@@ -116,6 +115,11 @@ extended f v = generate (length v) (\n -> f (drop n v)) {-# INLINE extended #-} +#if !(MIN_VERSION_vector(0,12,0))+instance Semigroup (Vector a) where+ (<>) = (++)+ {-# INLINE (<>) #-}+ instance Unboxed.Unbox a => Semigroup (Unboxed.Vector a) where (<>) = (Unboxed.++) {-# INLINE (<>) #-}@@ -127,3 +131,22 @@ instance Primitive.Prim a => Semigroup (Primitive.Vector a) where (<>) = (Primitive.++) {-# INLINE (<>) #-}+#endif++#ifdef MIN_VERSION_hashable+instance (Hashable a) => Hashable (Vector a) where+ hashWithSalt salt = hashWithSalt salt . Vector.toList+ {-# INLINE hashWithSalt #-}++instance (Unboxed.Unbox a, Hashable a) => Hashable (Unboxed.Vector a) where+ hashWithSalt salt = hashWithSalt salt . Unboxed.toList+ {-# INLINE hashWithSalt #-}++instance (Storable.Storable a, Hashable a) => Hashable (Storable.Vector a) where+ hashWithSalt salt = hashWithSalt salt . Storable.toList+ {-# INLINE hashWithSalt #-}++instance (Primitive.Prim a, Hashable a) => Hashable (Primitive.Vector a) where+ hashWithSalt salt = hashWithSalt salt . Primitive.toList+ {-# INLINE hashWithSalt #-}+#endif
vector-instances.cabal view
@@ -1,5 +1,5 @@ name: vector-instances-version: 3.3.1+version: 3.4 synopsis: Orphan Instances for 'Data.Vector' homepage: http://github.com/ekmett/vector-instances bug-reports: http://github.com/ekmett/vector-instances/issues@@ -10,6 +10,14 @@ category: Data, Data Structures build-type: Simple cabal-version: >=1.6+tested-with:+ GHC==7.0.4,+ GHC==7.2.2,+ GHC==7.4.2,+ GHC==7.6.3,+ GHC==7.8.4,+ GHC==7.10.3,+ GHC==8.0.2 extra-source-files: .travis.yml .ghci@@ -22,15 +30,24 @@ type: git location: git://github.com/ekmett/vector-instances.git +flag hashable+ description:+ You can disable the use of the `hashable` package using `-f-hashable`.+ default: True+ manual: True+ library other-extensions: TypeFamilies exposed-modules: Data.Vector.Instances hs-source-dirs: src build-depends: base >= 4 && < 5,- vector >= 0.9 && < 0.12,+ vector >= 0.9 && < 0.13, semigroupoids >= 3, semigroups >= 0.8.3.1, comonad >= 3, pointed >= 3, keys >= 3++ if flag(hashable)+ build-depends: hashable >= 1.1.1.0