distributive 0.4.4 → 0.5
raw patch · 10 files changed
+179/−34 lines, 10 filesdep +base-orphansdep ~transformerssetup-changedPVP ok
version bump matches the API change (PVP)
Dependencies added: base-orphans
Dependency ranges changed: transformers
API changes (from Hackage documentation)
- Data.Distributive: instance (Distributive f, Distributive g) => Distributive (Compose f g)
- Data.Distributive: instance (Distributive f, Distributive g) => Distributive (Product f g)
- Data.Distributive: instance Distributive ((->) e)
- Data.Distributive: instance Distributive (Proxy *)
- Data.Distributive: instance Distributive (Tagged * t)
- Data.Distributive: instance Distributive Identity
- Data.Distributive: instance Distributive f => Distributive (Backwards f)
- Data.Distributive: instance Distributive f => Distributive (Reverse f)
- Data.Distributive: instance Distributive g => Distributive (IdentityT g)
- Data.Distributive: instance Distributive g => Distributive (ReaderT e g)
- Data.Distributive.Generic: instance (Functor a, Functor b, GDistributive a, GDistributive b) => GDistributive (a :.: b)
- Data.Distributive.Generic: instance (GDistributive a, GDistributive b) => GDistributive (a :*: b)
- Data.Distributive.Generic: instance GDistributive Par1
- Data.Distributive.Generic: instance GDistributive U1
- Data.Distributive.Generic: instance GDistributive f => GDistributive (M1 i c f)
- Data.Distributive.Generic: instance GDistributive f => GDistributive (Rec1 f)
+ Data.Distributive: instance (Data.Distributive.Distributive f, Data.Distributive.Distributive g) => Data.Distributive.Distributive (Data.Functor.Compose.Compose f g)
+ Data.Distributive: instance (Data.Distributive.Distributive f, Data.Distributive.Distributive g) => Data.Distributive.Distributive (Data.Functor.Product.Product f g)
+ Data.Distributive: instance Data.Distributive.Distributive ((->) e)
+ Data.Distributive: instance Data.Distributive.Distributive (Data.Tagged.Tagged t)
+ Data.Distributive: instance Data.Distributive.Distributive Data.Complex.Complex
+ Data.Distributive: instance Data.Distributive.Distributive Data.Functor.Identity.Identity
+ Data.Distributive: instance Data.Distributive.Distributive Data.Monoid.Dual
+ Data.Distributive: instance Data.Distributive.Distributive Data.Monoid.Product
+ Data.Distributive: instance Data.Distributive.Distributive Data.Monoid.Sum
+ Data.Distributive: instance Data.Distributive.Distributive Data.Proxy.Proxy
+ Data.Distributive: instance Data.Distributive.Distributive f => Data.Distributive.Distributive (Control.Applicative.Backwards.Backwards f)
+ Data.Distributive: instance Data.Distributive.Distributive f => Data.Distributive.Distributive (Data.Functor.Reverse.Reverse f)
+ Data.Distributive: instance Data.Distributive.Distributive g => Data.Distributive.Distributive (Control.Monad.Trans.Identity.IdentityT g)
+ Data.Distributive: instance Data.Distributive.Distributive g => Data.Distributive.Distributive (Control.Monad.Trans.Reader.ReaderT e g)
+ Data.Distributive.Generic: instance (Data.Distributive.Generic.GDistributive a, Data.Distributive.Generic.GDistributive b) => Data.Distributive.Generic.GDistributive (a GHC.Generics.:*: b)
+ Data.Distributive.Generic: instance (GHC.Base.Functor a, GHC.Base.Functor b, Data.Distributive.Generic.GDistributive a, Data.Distributive.Generic.GDistributive b) => Data.Distributive.Generic.GDistributive (a GHC.Generics.:.: b)
+ Data.Distributive.Generic: instance Data.Distributive.Generic.GDistributive GHC.Generics.Par1
+ Data.Distributive.Generic: instance Data.Distributive.Generic.GDistributive GHC.Generics.U1
+ Data.Distributive.Generic: instance Data.Distributive.Generic.GDistributive f => Data.Distributive.Generic.GDistributive (GHC.Generics.M1 i c f)
+ Data.Distributive.Generic: instance Data.Distributive.Generic.GDistributive f => Data.Distributive.Generic.GDistributive (GHC.Generics.Rec1 f)
Files
- .ghci +0/−1
- .travis.yml +112/−13
- CHANGELOG.markdown +6/−0
- LICENSE +1/−1
- README.markdown +1/−1
- Setup.lhs +4/−0
- distributive.cabal +16/−13
- src/Data/Distributive.hs +32/−1
- src/Data/Distributive/Generic.hs +1/−1
- tests/doctests.hs +6/−3
− .ghci
@@ -1,1 +0,0 @@-:set -isrc -idist/build/autogen -optP-include -optPdist/build/autogen/cabal_macros.h
.travis.yml view
@@ -1,17 +1,118 @@-language: haskell-before_install:- # Uncomment whenever hackage is down.- # - mkdir -p ~/.cabal && cp config ~/.cabal/config && cabal update+# This file has been generated -- see https://github.com/hvr/multi-ghc-travis+language: c+sudo: false - # Try installing some of the build-deps with apt-get for speed.- - ./travis-cabal-apt-install --only-dependencies --force-reinstall $mode+cache:+ directories:+ - $HOME/.cabsnap+ - $HOME/.cabal/packages+ - $HOME/.stack +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.16 GHCVER=7.4.2 BUILD=cabal+ compiler: ": #GHC 7.4.2"+ addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}++ - env: CABALVER=1.16 GHCVER=7.6.3 BUILD=cabal+ compiler: ": #GHC 7.6.3"+ addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}++ - env: CABALVER=1.18 GHCVER=7.8.4 BUILD=cabal+ compiler: ": #GHC 7.8.4"+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}++ - env: BUILD=stack STACK_YAML=stack-7.8.yaml STACK_OPTIONS=--skip-ghc-check+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}++ - env: BUILD=stack STACK_YAML=stack-7.8.yaml+ os: osx++ - env: CABALVER=1.22 GHCVER=7.10.1 BUILD=cabal+ compiler: ": #GHC 7.10.1"+ addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.1,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}++ - env: CABALVER=1.22 GHCVER=7.10.2 BUILD=cabal+ compiler: ": #GHC 7.10.2"+ addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}++ - env: BUILD=stack STACK_OPTIONS=--skip-ghc-check+ addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}++ - env: BUILD=stack+ os: osx+++before_install:+ - unset CC+ - case "$BUILD" in+ stack)+ export STACK_VERSION=0.1.3.0;+ export PATH=~/bin:$PATH;+ mkdir -p ~/bin;+ travis_retry curl -L https://github.com/commercialhaskell/stack/releases/download/v$STACK_VERSION/stack-$STACK_VERSION-x86_64-$TRAVIS_OS_NAME.gz | gunzip > ~/bin/stack;+ chmod a+x ~/bin/stack;+ scripts/travis_long stack --no-terminal setup;;+ cabal)+ export HAPPYVER=1.19.5+ export ALEXVER=3.1.4+ export PATH=~/.cabal/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/happy/$HAPPYVER/bin:/opt/alex/$ALEXVER/bin:$PATH;;+ esac install:- - cabal configure -flib-Werror $mode- - cabal build+ - case "$BUILD" in+ stack)+ scripts/travis_long stack --no-terminal $STACK_OPTIONS build --only-snapshot -j2;;+ cabal)+ echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"+ cabal --version;+ 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;+ cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt;+ sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt;+ 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 --only-dependencies --enable-tests --enable-benchmarks;+ if [ "$GHCVER" = "7.10.1" ]; then cabal install Cabal-1.22.4.0; fi;+ fi;+ 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;;+ esac +# snapshot package-db on cache miss++# 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:- - $script+ - case "$BUILD" in+ stack)+ scripts/travis_long stack --no-terminal $STACK_OPTIONS build -j2;;+ cabal)+ cabal configure --enable-tests -v2;+ cabal build;+ cabal test;+ cabal bench || true;+ cabal sdist || true;+ SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz && (cd dist && cabal install --force-reinstalls "$SRC_TGZ");;+ esac notifications: irc:@@ -19,7 +120,5 @@ - "irc.freenode.org#haskell-lens" skip_join: true template:- - "\x0313distributive\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"--env:- - mode="--enable-tests" script="cabal test"+ - "\x0313distributive\x0f/\x0306%{branch}\x0f \x0314%{commit}\x0f %{message} \x0302\x1f%{build_url}\x0f"+# EOF
CHANGELOG.markdown view
@@ -1,3 +1,9 @@+0.5+---+* Added flags for removing some dependencies.+* Support `doctests` when building to non-standard locations (such as when using `stack`.)+* Support `base-orphans`+ 0.4.4 ----- * `transformers 0.4` compatibility
LICENSE view
@@ -1,4 +1,4 @@-Copyright 2011-2014 Edward Kmett+Copyright 2011-2016 Edward Kmett All rights reserved.
README.markdown view
@@ -1,7 +1,7 @@ distributive ============ -[](http://travis-ci.org/ekmett/distributive)+[](https://hackage.haskell.org/package/distributive) [](http://travis-ci.org/ekmett/distributive) This package provides the notion that is categorically dual to `Traversable`.
Setup.lhs view
@@ -30,6 +30,10 @@ withTestLBI pkg lbi $ \suite suitecfg -> do rewriteFile (dir </> "Build_" ++ testName suite ++ ".hs") $ unlines [ "module Build_" ++ testName suite ++ " where"+ , ""+ , "autogen_dir :: String"+ , "autogen_dir = " ++ show dir+ , "" , "deps :: [String]" , "deps = " ++ (show $ formatdeps (testDeps libcfg suitecfg)) ]
distributive.cabal view
@@ -1,6 +1,6 @@ name: distributive category: Data Structures-version: 0.4.4+version: 0.5 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE@@ -9,12 +9,11 @@ stability: provisional homepage: http://github.com/ekmett/distributive/ bug-reports: http://github.com/ekmett/distributive/issues-copyright: Copyright (C) 2011-2014 Edward A. Kmett+copyright: Copyright (C) 2011-2016 Edward A. Kmett synopsis: Distributive functors -- Dual to Traversable description: Distributive functors -- Dual to Traversable build-type: Custom extra-source-files:- .ghci .travis.yml .vim.custom config@@ -26,15 +25,19 @@ type: git location: git://github.com/ekmett/distributive.git -flag lib-Werror+flag tagged manual: True- default: False+ default: True+ description:+ You can disable the use of the `tagged` package using `-f-tagged`.+ .+ Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users. library build-depends: base >= 4 && < 5,- tagged >= 0.7 && < 1,- transformers >= 0.2 && < 0.5,+ base-orphans >= 0.5 && < 1,+ transformers >= 0.2 && < 0.6, transformers-compat >= 0.3 && < 1 hs-source-dirs: src@@ -43,12 +46,14 @@ if impl(ghc>=7.2) exposed-modules: Data.Distributive.Generic++ if flag(tagged)+ build-depends: tagged >= 0.7 && < 1++ if impl(ghc>=7.4 && < 7.6) build-depends: ghc-prim - if flag(lib-Werror)- ghc-options: -Werror- else- ghc-options: -Wall+ ghc-options: -Wall -- Verify the results of the examples test-suite doctests@@ -60,6 +65,4 @@ doctest >= 0.9.1, filepath >= 1.2 ghc-options: -Wall -threaded- if impl(ghc<7.6.1)- ghc-options: -Werror hs-source-dirs: tests
src/Data/Distributive.hs view
@@ -3,7 +3,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Data.Distributive--- Copyright : (C) 2011-2014 Edward Kmett+-- Copyright : (C) 2011-2016 Edward Kmett -- License : BSD-style (see the file LICENSE) -- -- Maintainer : Edward Kmett <ekmett@gmail.com>@@ -29,8 +29,18 @@ import Data.Functor.Identity import Data.Functor.Product import Data.Functor.Reverse+import qualified Data.Monoid as Monoid+import Data.Orphans ()++#if MIN_VERSION_base(4,4,0)+import Data.Complex+#endif+#if (defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707) || defined(MIN_VERSION_tagged) import Data.Proxy+#endif+#ifdef MIN_VERSION_tagged import Data.Tagged+#endif #ifdef HLINT {-# ANN module "hlint: ignore Use section" #-}@@ -125,3 +135,24 @@ instance Distributive f => Distributive (Reverse f) where distribute = Reverse . collect getReverse++instance Distributive Monoid.Dual where+ collect f = Monoid.Dual . fmap (Monoid.getDual . f)+ distribute = Monoid.Dual . fmap Monoid.getDual++instance Distributive Monoid.Product where+ collect f = Monoid.Product . fmap (Monoid.getProduct . f)+ distribute = Monoid.Product . fmap Monoid.getProduct++instance Distributive Monoid.Sum where+ collect f = Monoid.Sum . fmap (Monoid.getSum . f)+ distribute = Monoid.Sum . fmap Monoid.getSum++#if MIN_VERSION_base(4,4,0)+instance Distributive Complex where+ distribute wc = fmap realP wc :+ fmap imagP wc where+ -- Redefine realPart and imagPart to avoid incurring redundant RealFloat+ -- constraints on older versions of base+ realP (r :+ _) = r+ imagP (_ :+ i) = i+#endif
src/Data/Distributive/Generic.hs view
@@ -4,7 +4,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Data.Distributive--- Copyright : (C) 2011-2014 Edward Kmett+-- Copyright : (C) 2011-2016 Edward Kmett -- License : BSD-style (see the file LICENSE) -- -- Maintainer : Edward Kmett <ekmett@gmail.com>
tests/doctests.hs view
@@ -1,7 +1,10 @@+{-# LANGUAGE CPP #-} module Main where -import Build_doctests (deps)+import Build_doctests (autogen_dir, deps)+#if __GLASGOW_HASKELL__ < 710 import Control.Applicative+#endif import Control.Monad import Data.List import System.Directory@@ -11,9 +14,9 @@ main :: IO () main = getSources >>= \sources -> doctest $ "-isrc"- : "-idist/build/autogen"+ : ("-i" ++ autogen_dir) : "-optP-include"- : "-optPdist/build/autogen/cabal_macros.h"+ : ("-optP" ++ autogen_dir ++ "/cabal_macros.h") : "-hide-all-packages" : map ("-package="++) deps ++ sources