diff --git a/.github/workflows/haskell-ci.yml b/.github/workflows/haskell-ci.yml index cb38aec..c124723 100644 --- a/.github/workflows/haskell-ci.yml +++ b/.github/workflows/haskell-ci.yml @@ -1,6 +1,6 @@ # This GitHub workflow config has been generated by a script via # -# haskell-ci '--config=cabal.haskell-ci' 'github' 'cabal.project' +# haskell-ci 'github' 'indexed-traversable/indexed-traversable.cabal' # # To regenerate the script (for example after adjusting tested-with) run # @@ -8,9 +8,9 @@ # # For more information, see https://github.com/haskell-CI/haskell-ci # -# version: 0.13.20211030 +# version: 0.14.2 # -# REGENDATA ("0.13.20211030",["--config=cabal.haskell-ci","github","cabal.project"]) +# REGENDATA ("0.14.2",["github","indexed-traversable/indexed-traversable.cabal"]) # name: Haskell-CI on: @@ -24,6 +24,8 @@ jobs: linux: name: Haskell-CI - Linux - ${{ matrix.compiler }} runs-on: ubuntu-18.04 + timeout-minutes: + 60 container: image: buildpack-deps:bionic continue-on-error: ${{ matrix.allow-failure }} @@ -179,6 +181,10 @@ jobs: repository hackage.haskell.org url: http://hackage.haskell.org/ EOF + cat >> $CABAL_CONFIG <> cabal.project - if [ $((HCNUMVER >= 70400)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/indexed-traversable-instances" >> cabal.project ; fi cat cabal.project - name: sdist run: | @@ -219,20 +224,15 @@ jobs: run: | PKGDIR_indexed_traversable="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/indexed-traversable-[0-9.]*')" echo "PKGDIR_indexed_traversable=${PKGDIR_indexed_traversable}" >> "$GITHUB_ENV" - PKGDIR_indexed_traversable_instances="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/indexed-traversable-instances-[0-9.]*')" - echo "PKGDIR_indexed_traversable_instances=${PKGDIR_indexed_traversable_instances}" >> "$GITHUB_ENV" rm -f cabal.project cabal.project.local touch cabal.project touch cabal.project.local echo "packages: ${PKGDIR_indexed_traversable}" >> cabal.project - if [ $((HCNUMVER >= 70400)) -ne 0 ] ; then echo "packages: ${PKGDIR_indexed_traversable_instances}" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package indexed-traversable" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi - if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package indexed-traversable-instances" >> cabal.project ; fi - if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi cat >> cabal.project <> cabal.project.local + $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(indexed-traversable)$/; }' >> cabal.project.local cat cabal.project cat cabal.project.local - name: dump install plan @@ -251,15 +251,10 @@ jobs: - name: build run: | $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always - - name: tests - run: | - if [ $((HCNUMVER >= 70400)) -ne 0 ] ; then $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct ; fi - name: cabal check run: | cd ${PKGDIR_indexed_traversable} || false ${CABAL} -vnormal check - if [ $((HCNUMVER >= 70400)) -ne 0 ] ; then cd ${PKGDIR_indexed_traversable_instances} || false ; fi - if [ $((HCNUMVER >= 70400)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi - name: haddock run: | $CABAL v2-haddock $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all diff --git a/haskell-ci.sh b/haskell-ci.sh index 9134336..2093bc5 100644 --- a/haskell-ci.sh +++ b/haskell-ci.sh @@ -1,6 +1,6 @@ #!/bin/bash # shellcheck disable=SC2086,SC2016,SC2046 -# REGENDATA ("0.13.20211030",["bash","cabal.project"]) +# REGENDATA ("0.14.2",["bash","cabal.project"]) set -o pipefail diff --git a/indexed-traversable/indexed-traversable.cabal b/indexed-traversable/indexed-traversable.cabal index cdcd465..ec94148 100644 --- a/indexed-traversable/indexed-traversable.cabal +++ b/indexed-traversable/indexed-traversable.cabal @@ -82,8 +82,7 @@ library if !impl(ghc >=8.0) build-depends: - base-orphans >=0.8.3 && <0.9 - , semigroups >=0.18.4 && <0.21 + semigroups >=0.18.4 && <0.21 , transformers-compat >=0.6.6 && <0.8 if (impl(ghc >=7.0) && impl(ghc <7.6)) @@ -91,3 +90,6 @@ library if (impl(ghc >=7.0) && impl(ghc <7.2)) build-depends: generic-deriving ==1.14.* + + if !impl(ghc >=8.10) + build-depends: base-orphans >=0.8.3 && <0.9 diff --git a/indexed-traversable/src/WithIndex.hs b/indexed-traversable/src/WithIndex.hs index 9b9845d..947c54e 100644 --- a/indexed-traversable/src/WithIndex.hs +++ b/indexed-traversable/src/WithIndex.hs @@ -24,6 +24,7 @@ import Prelude import Control.Applicative (Applicative (..), Const (..), ZipList (..), (<$>), liftA2) import Control.Applicative.Backwards (Backwards (..)) +import Control.Arrow (Kleisli (..)) import Control.Monad.Trans.Identity (IdentityT (..)) import Control.Monad.Trans.Reader (ReaderT (..)) import Data.Array (Array) @@ -280,6 +281,10 @@ instance TraversableWithIndex Int ZipList where itraverse f (ZipList xs) = ZipList <$> itraverse f xs {-# INLINE itraverse #-} +instance Functor m => FunctorWithIndex a (Kleisli m a) where + imap f (Kleisli p) = Kleisli (\x -> f x <$> p x) + {-# INLINE imap #-} + ------------------------------------------------------------------------------- -- (former) semigroups ------------------------------------------------------------------------------- @@ -296,7 +301,7 @@ instance TraversableWithIndex Int NonEmpty where {-# INLINE itraverse #-} ------------------------------------------------------------------------------- --- Functors (formely) from transformers +-- Functors (formerly) from transformers ------------------------------------------------------------------------------- instance FunctorWithIndex () Identity where