git.iko.soy/monoidal-containers
on 69895ff help sign in
8 files changed+51−117
since splitsnapshots
unifiedsplit
.travis.yml+41−46 Changelog.md−4 monoidal-containers.cabal+7−6 src/Data/HashMap/Monoidal.hs−12 src/Data/IntMap/Monoidal.hs−12 src/Data/IntMap/Monoidal/Strict.hs+1−13 src/Data/Map/Monoidal.hs−12 src/Data/Map/Monoidal/Strict.hs+2−12
.travis.yml+41−46
@@ -2,18 +2,13 @@
22#
33# haskell-ci 'monoidal-containers.cabal' '-o' '.travis.yml'
44#
5−# To regenerate the script (for example after adjusting tested-with) run
6−#
7−# haskell-ci regenerate
8−#
95# For more information, see https://github.com/haskell-CI/haskell-ci
106#
11−# version: 0.10.3
7+# version: 0.3.20190814
128#
13−version: ~> 1.0
149language: c
15−os: linux
1610dist: xenial
11+sudo: required
1712git:
1813 # whether to recursively clone submodules
1914 submodules: false
@@ -21,7 +16,6 @@ cache:
2116 directories:
2217 - $HOME/.cabal/packages
2318 - $HOME/.cabal/store
24− - $HOME/.hlint
2519before_cache:
2620 - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
2721 # remove files that are regenerated by 'cabal update'
@@ -31,33 +25,23 @@ before_cache:
3125 - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
3226 - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
3327 - rm -rfv $CABALHOME/packages/head.hackage
34−jobs:
28+matrix:
3529 include:
36− - compiler: ghc-8.10.2
37− addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.10.2","cabal-install-3.2"]}}
38− os: linux
39− - compiler: ghc-8.8.4
40− addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.8.4","cabal-install-3.2"]}}
41− os: linux
30+ - compiler: ghc-8.8.1
31+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.8.1","cabal-install-3.0"]}}
4232 - compiler: ghc-8.6.5
43− addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.6.5","cabal-install-3.2"]}}
44− os: linux
33+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.6.5","cabal-install-2.4"]}}
4534 - compiler: ghc-8.4.3
46− addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.4.3","cabal-install-3.2"]}}
47− os: linux
35+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.4.3","cabal-install-2.4"]}}
4836 - compiler: ghc-8.2.2
49− addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.2.2","cabal-install-3.2"]}}
50− os: linux
37+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.2.2","cabal-install-2.4"]}}
5138 - compiler: ghc-8.0.2
52− addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.0.2","cabal-install-3.2"]}}
53− os: linux
39+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.0.2","cabal-install-2.4"]}}
5440 - compiler: ghc-7.8.4
55− addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-7.8.4","cabal-install-3.2"]}}
56− os: linux
41+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-7.8.4","cabal-install-2.4"]}}
5742before_install:
5843 - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
5944 - WITHCOMPILER="-w $HC"
60− - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')
6145 - HCPKG="$HC-pkg"
6246 - unset CC
6347 - CABAL=/opt/ghc/bin/cabal
@@ -66,8 +50,29 @@ before_install:
6650 - TOP=$(pwd)
6751 - "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')"
6852 - echo $HCNUMVER
69− - CABAL="$CABAL -vnormal+nowrap"
53+ - CABAL="$CABAL -vnormal+nowrap+markoutput"
7054 - set -o pipefail
55+ - |
56+ echo 'function blue(s) { printf "\033[0;34m" s "\033[0m " }' >> .colorful.awk
57+ echo 'BEGIN { state = "output"; }' >> .colorful.awk
58+ echo '/^-----BEGIN CABAL OUTPUT-----$/ { state = "cabal" }' >> .colorful.awk
59+ echo '/^-----END CABAL OUTPUT-----$/ { state = "output" }' >> .colorful.awk
60+ echo '!/^(-----BEGIN CABAL OUTPUT-----|-----END CABAL OUTPUT-----)/ {' >> .colorful.awk
61+ echo ' if (state == "cabal") {' >> .colorful.awk
62+ echo ' print blue($0)' >> .colorful.awk
63+ echo ' } else {' >> .colorful.awk
64+ echo ' print $0' >> .colorful.awk
65+ echo ' }' >> .colorful.awk
66+ echo '}' >> .colorful.awk
67+ - cat .colorful.awk
68+ - |
69+ color_cabal_output () {
70+ awk -f $TOP/.colorful.awk
71+ }
72+ - echo text | color_cabal_output
73+install:
74+ - ${CABAL} --version
75+ - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
7176 - TEST=--enable-tests
7277 - BENCH=--enable-benchmarks
7378 - HEADHACKAGE=false
@@ -88,12 +93,6 @@ before_install:
8893 echo " prefix: $CABALHOME" >> $CABALHOME/config
8994 echo "repository hackage.haskell.org" >> $CABALHOME/config
9095 echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
91−install:
92− - ${CABAL} --version
93− - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
94− - |
95− echo "program-default-options" >> $CABALHOME/config
96− echo " ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config
9796 - cat $CABALHOME/config
9897 - rm -fv cabal.project cabal.project.local cabal.project.freeze
9998 - travis_retry ${CABAL} v2-update -v
@@ -102,22 +101,20 @@ install:
102101 - touch cabal.project
103102 - |
104103 echo "packages: ." >> cabal.project
105− - if [ $HCNUMVER -ge 80200 ] ; then echo 'package monoidal-containers' >> cabal.project ; fi
106− - "if [ $HCNUMVER -ge 80200 ] ; then echo ' ghc-options: -Werror=missing-methods' >> cabal.project ; fi"
107104 - |
108105 - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(monoidal-containers)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
109106 - cat cabal.project || true
110107 - cat cabal.project.local || true
111108 - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
112− - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH}
109+ - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH} | color_cabal_output
113110 - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
114111 - rm cabal.project.freeze
115− - travis_wait 40 ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} --dep -j2 all
116− - travis_wait 40 ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --dep -j2 all
112+ - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} --dep -j2 all | color_cabal_output
113+ - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --dep -j2 all | color_cabal_output
117114script:
118115 - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
119116 # Packaging...
120− - ${CABAL} v2-sdist all
117+ - ${CABAL} v2-sdist all | color_cabal_output
121118 # Unpacking...
122119 - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
123120 - cd ${DISTDIR} || false
@@ -129,25 +126,23 @@ script:
129126 - touch cabal.project
130127 - |
131128 echo "packages: ${PKGDIR_monoidal_containers}" >> cabal.project
132− - if [ $HCNUMVER -ge 80200 ] ; then echo 'package monoidal-containers' >> cabal.project ; fi
133− - "if [ $HCNUMVER -ge 80200 ] ; then echo ' ghc-options: -Werror=missing-methods' >> cabal.project ; fi"
134129 - |
135130 - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(monoidal-containers)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
136131 - cat cabal.project || true
137132 - cat cabal.project.local || true
138133 # Building...
139134 # this builds all libraries and executables (without tests/benchmarks)
140− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
135+ - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
141136 # Building with tests and benchmarks...
142137 # build & run tests, build benchmarks
143− - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all
138+ - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output
144139 # cabal check...
145140 - (cd ${PKGDIR_monoidal_containers} && ${CABAL} -vnormal check)
146141 # haddock...
147− - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all
142+ - ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output
148143 # Building without installed constraints for packages in global-db...
149144 - rm -f cabal.project.local
150− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
145+ - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
151146
152−# REGENDATA ("0.10.3",["monoidal-containers.cabal","-o",".travis.yml"])
147+# REGENDATA ["monoidal-containers.cabal","-o",".travis.yml"]
153148# EOF
Changelog.md−4
@@ -1,9 +1,5 @@
11# Monoidal containers
22
3−# 0.6.0.1
4−
5− * Support semialign-1.1
6−
73# 0.6
84
95 * Deprecates 0.5.* and reverts behavior of fromList, insert, mapKeys, etc. to match behavior in Data.Map. The only difference in behavior between Data.Map.Monoidal.MonoidalMap and Data.Map.Map is now the semigroup and monoid instances (as was the case in 0.4 and earlier).
monoidal-containers.cabal+7−6
@@ -1,5 +1,5 @@
11name: monoidal-containers
2−version: 0.6.0.1
2+version: 0.6
33synopsis: Containers with monoidal accumulation
44description:
55 Containers with merging via monoidal accumulation. The 'Monoid' instances
@@ -24,7 +24,7 @@ category: Data
2424build-type: Simple
2525cabal-version: >=1.10
2626extra-source-files: Changelog.md
27−tested-with: GHC ==7.8.4, GHC ==8.0.2, GHC ==8.2.2, GHC ==8.4.3, GHC ==8.6.5, GHC ==8.8.4, GHC ==8.10.2
27+tested-with: GHC ==7.8.4, GHC ==8.0.2, GHC ==8.2.2, GHC ==8.4.3, GHC ==8.6.5, GHC ==8.8.1
2828
2929source-repository head
3030 type: git
@@ -46,8 +46,8 @@ library
4646 GeneralizedNewtypeDeriving,
4747 DeriveTraversable,
4848 DeriveDataTypeable
49− build-depends: base >=4.7 && <4.16,
50− aeson >=1.0 && <1.6,
49+ build-depends: base >=4.5 && <4.14,
50+ aeson >=1.0 && <1.5,
5151 containers >=0.5 && <0.7,
5252 deepseq >=1.3 && <1.5,
5353 unordered-containers >= 0.2 && < 0.3,
@@ -57,8 +57,9 @@ library
5757 semigroups >= 0.18 && < 0.20
5858
5959 if flag(split-these)
60− build-depends: these >= 1 && <1.2,
61− semialign >=1 && <1.2
60+ build-depends: these >= 1 && <1.1,
61+ semialign >=1 && <1.1
62+
6263 else
6364 build-depends: these >= 0.7 && <0.9
6465
src/Data/HashMap/Monoidal.hs−12
@@ -60,12 +60,6 @@ import Data.Hashable.Lifted (Hashable1)
6060import Control.Lens
6161import Control.Newtype
6262import Data.Align
63−#ifdef MIN_VERSION_semialign
64−import Data.Semialign (Unalign)
65−#if MIN_VERSION_semialign(1,1,0)
66−import Data.Zip (Zip)
67−#endif
68−#endif
6963
7064-- | A 'HashMap' with monoidal accumulation
7165newtype MonoidalHashMap k a = MonoidalHashMap { getMonoidalHashMap :: M.HashMap k a }
@@ -76,12 +70,6 @@ newtype MonoidalHashMap k a = MonoidalHashMap { getMonoidalHashMap :: M.HashMap
7670#endif
7771#if MIN_VERSION_these(0,8,0)
7872 , Semialign
79−#endif
80−#ifdef MIN_VERSION_semialign
81− , Unalign
82−#if MIN_VERSION_semialign(1,1,0)
83− , Zip
84−#endif
8573#endif
8674 )
8775
src/Data/IntMap/Monoidal.hs−12
@@ -151,12 +151,6 @@ import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1)
151151import Data.Functor.Classes
152152#endif
153153import Data.Align
154−#ifdef MIN_VERSION_semialign
155−import Data.Semialign (Unalign)
156−#if MIN_VERSION_semialign(1,1,0)
157−import Data.Zip (Zip)
158−#endif
159−#endif
160154
161155-- | An 'IntMap' with monoidal accumulation
162156newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
@@ -166,12 +160,6 @@ newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
166160 Data, Typeable, Align
167161#if MIN_VERSION_these(0,8,0)
168162 , Semialign
169−#endif
170−#ifdef MIN_VERSION_semialign
171− , Unalign
172−#if MIN_VERSION_semialign(1,1,0)
173− , Zip
174−#endif
175163#endif
176164 )
177165
src/Data/IntMap/Monoidal/Strict.hs+1−13
@@ -151,12 +151,6 @@ import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1)
151151import Data.Functor.Classes
152152#endif
153153import Data.Align
154−#ifdef MIN_VERSION_semialign
155−import Data.Semialign (Unalign)
156−#if MIN_VERSION_semialign(1,1,0)
157−import Data.Zip (Zip)
158−#endif
159−#endif
160154
161155-- | An 'IntMap' with monoidal accumulation
162156newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
@@ -165,13 +159,7 @@ newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
165159 FromJSON, ToJSON, FromJSON1, ToJSON1,
166160 Data, Typeable, Align
167161#if MIN_VERSION_these(0,8,0)
168− , Semialign
169−#endif
170−#ifdef MIN_VERSION_semialign
171− , Unalign
172−#if MIN_VERSION_semialign(1,1,0)
173− , Zip
174−#endif
162+ , Semialign
175163#endif
176164 )
177165
src/Data/Map/Monoidal.hs−12
@@ -151,12 +151,6 @@ import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1)
151151import Data.Functor.Classes
152152#endif
153153import Data.Align
154−#ifdef MIN_VERSION_semialign
155−import Data.Semialign (Unalign)
156−#if MIN_VERSION_semialign(1,1,0)
157−import Data.Zip (Zip)
158−#endif
159−#endif
160154
161155-- | A 'Map' with monoidal accumulation
162156newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
@@ -166,12 +160,6 @@ newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
166160 , Data, Typeable, Align
167161#if MIN_VERSION_these(0,8,0)
168162 , Semialign
169−#endif
170−#ifdef MIN_VERSION_semialign
171− , Unalign
172−#if MIN_VERSION_semialign(1,1,0)
173− , Zip
174−#endif
175163#endif
176164 )
177165
src/Data/Map/Monoidal/Strict.hs+2−12
@@ -151,12 +151,6 @@ import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1)
151151import Data.Functor.Classes
152152#endif
153153import Data.Align
154−#ifdef MIN_VERSION_semialign
155−import Data.Semialign (Unalign)
156−#if MIN_VERSION_semialign(1,1,0)
157−import Data.Zip (Zip)
158−#endif
159−#endif
160154
161155-- | A 'Map' with monoidal accumulation
162156newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
@@ -166,12 +160,6 @@ newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
166160 , Data, Typeable, Align
167161#if MIN_VERSION_these(0,8,0)
168162 , Semialign
169−#endif
170−#ifdef MIN_VERSION_semialign
171− , Unalign
172−#if MIN_VERSION_semialign(1,1,0)
173− , Zip
174−#endif
175163#endif
176164 )
177165
@@ -699,3 +687,5 @@ maxViewWithKey = coerce (M.maxViewWithKey :: M.Map k a -> Maybe ((k, a), M.Map k
699687valid :: forall k a. Ord k => MonoidalMap k a -> Bool
700688valid = coerce (M.valid :: Ord k => M.Map k a -> Bool)
701689{-# INLINE valid #-}
690+
691+