git.iko.soy/monoidal-containers
on master help sign in
8 files changed+117−51
since splitsnapshots
unifiedsplit
.travis.yml+46−41 Changelog.md+4 monoidal-containers.cabal+6−7 src/Data/HashMap/Monoidal.hs+12 src/Data/IntMap/Monoidal.hs+12 src/Data/IntMap/Monoidal/Strict.hs+13−1 src/Data/Map/Monoidal.hs+12 src/Data/Map/Monoidal/Strict.hs+12−2
.travis.yml+46−41
@@ -2,13 +2,18 @@
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+#
59# For more information, see https://github.com/haskell-CI/haskell-ci
610#
7−# version: 0.3.20190814
11+# version: 0.10.3
812#
13+version: ~> 1.0
914language: c
15+os: linux
1016dist: xenial
11−sudo: required
1217git:
1318 # whether to recursively clone submodules
1419 submodules: false
@@ -16,6 +21,7 @@ cache:
1621 directories:
1722 - $HOME/.cabal/packages
1823 - $HOME/.cabal/store
24+ - $HOME/.hlint
1925before_cache:
2026 - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
2127 # remove files that are regenerated by 'cabal update'
@@ -25,23 +31,33 @@ before_cache:
2531 - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
2632 - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
2733 - rm -rfv $CABALHOME/packages/head.hackage
28−matrix:
34+jobs:
2935 include:
30− - compiler: ghc-8.8.1
31− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.8.1","cabal-install-3.0"]}}
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
3242 - compiler: ghc-8.6.5
33− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.6.5","cabal-install-2.4"]}}
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
3445 - compiler: ghc-8.4.3
35− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.4.3","cabal-install-2.4"]}}
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
3648 - compiler: ghc-8.2.2
37− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.2.2","cabal-install-2.4"]}}
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
3851 - compiler: ghc-8.0.2
39− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.0.2","cabal-install-2.4"]}}
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
4054 - compiler: ghc-7.8.4
41− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-7.8.4","cabal-install-2.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
4257before_install:
4358 - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
4459 - WITHCOMPILER="-w $HC"
60+ - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')
4561 - HCPKG="$HC-pkg"
4662 - unset CC
4763 - CABAL=/opt/ghc/bin/cabal
@@ -50,29 +66,8 @@ before_install:
5066 - TOP=$(pwd)
5167 - "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')"
5268 - echo $HCNUMVER
53− - CABAL="$CABAL -vnormal+nowrap+markoutput"
69+ - CABAL="$CABAL -vnormal+nowrap"
5470 - 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 '?')]"
7671 - TEST=--enable-tests
7772 - BENCH=--enable-benchmarks
7873 - HEADHACKAGE=false
@@ -93,6 +88,12 @@ install:
9388 echo " prefix: $CABALHOME" >> $CABALHOME/config
9489 echo "repository hackage.haskell.org" >> $CABALHOME/config
9590 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
9697 - cat $CABALHOME/config
9798 - rm -fv cabal.project cabal.project.local cabal.project.freeze
9899 - travis_retry ${CABAL} v2-update -v
@@ -101,20 +102,22 @@ install:
101102 - touch cabal.project
102103 - |
103104 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"
104107 - |
105108 - "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"
106109 - cat cabal.project || true
107110 - cat cabal.project.local || true
108111 - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
109− - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH} | color_cabal_output
112+ - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH}
110113 - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
111114 - rm cabal.project.freeze
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
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
114117script:
115118 - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
116119 # Packaging...
117− - ${CABAL} v2-sdist all | color_cabal_output
120+ - ${CABAL} v2-sdist all
118121 # Unpacking...
119122 - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
120123 - cd ${DISTDIR} || false
@@ -126,23 +129,25 @@ script:
126129 - touch cabal.project
127130 - |
128131 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"
129134 - |
130135 - "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"
131136 - cat cabal.project || true
132137 - cat cabal.project.local || true
133138 # Building...
134139 # this builds all libraries and executables (without tests/benchmarks)
135− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
140+ - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
136141 # Building with tests and benchmarks...
137142 # build & run tests, build benchmarks
138− - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output
143+ - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all
139144 # cabal check...
140145 - (cd ${PKGDIR_monoidal_containers} && ${CABAL} -vnormal check)
141146 # haddock...
142− - ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output
147+ - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all
143148 # Building without installed constraints for packages in global-db...
144149 - rm -f cabal.project.local
145− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
150+ - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
146151
147−# REGENDATA ["monoidal-containers.cabal","-o",".travis.yml"]
152+# REGENDATA ("0.10.3",["monoidal-containers.cabal","-o",".travis.yml"])
148153# EOF
Changelog.md+4
@@ -1,5 +1,9 @@
11# Monoidal containers
22
3+# 0.6.0.1
4+
5+ * Support semialign-1.1
6+
37# 0.6
48
59 * 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+6−7
@@ -1,5 +1,5 @@
11name: monoidal-containers
2−version: 0.6
2+version: 0.6.0.1
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.1
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
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.14,
50− aeson >=1.0 && <1.5,
49+ build-depends: base >=4.7 && <4.16,
50+ aeson >=1.0 && <1.6,
5151 containers >=0.5 && <0.7,
5252 deepseq >=1.3 && <1.5,
5353 unordered-containers >= 0.2 && < 0.3,
@@ -57,9 +57,8 @@ library
5757 semigroups >= 0.18 && < 0.20
5858
5959 if flag(split-these)
60− build-depends: these >= 1 && <1.1,
61− semialign >=1 && <1.1
62−
60+ build-depends: these >= 1 && <1.2,
61+ semialign >=1 && <1.2
6362 else
6463 build-depends: these >= 0.7 && <0.9
6564
src/Data/HashMap/Monoidal.hs+12
@@ -60,6 +60,12 @@ 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
6369
6470-- | A 'HashMap' with monoidal accumulation
6571newtype MonoidalHashMap k a = MonoidalHashMap { getMonoidalHashMap :: M.HashMap k a }
@@ -70,6 +76,12 @@ newtype MonoidalHashMap k a = MonoidalHashMap { getMonoidalHashMap :: M.HashMap
7076#endif
7177#if MIN_VERSION_these(0,8,0)
7278 , Semialign
79+#endif
80+#ifdef MIN_VERSION_semialign
81+ , Unalign
82+#if MIN_VERSION_semialign(1,1,0)
83+ , Zip
84+#endif
7385#endif
7486 )
7587
src/Data/IntMap/Monoidal.hs+12
@@ -151,6 +151,12 @@ 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
154160
155161-- | An 'IntMap' with monoidal accumulation
156162newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
@@ -160,6 +166,12 @@ newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
160166 Data, Typeable, Align
161167#if MIN_VERSION_these(0,8,0)
162168 , Semialign
169+#endif
170+#ifdef MIN_VERSION_semialign
171+ , Unalign
172+#if MIN_VERSION_semialign(1,1,0)
173+ , Zip
174+#endif
163175#endif
164176 )
165177
src/Data/IntMap/Monoidal/Strict.hs+13−1
@@ -151,6 +151,12 @@ 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
154160
155161-- | An 'IntMap' with monoidal accumulation
156162newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
@@ -159,7 +165,13 @@ newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
159165 FromJSON, ToJSON, FromJSON1, ToJSON1,
160166 Data, Typeable, Align
161167#if MIN_VERSION_these(0,8,0)
162− , Semialign
168+ , Semialign
169+#endif
170+#ifdef MIN_VERSION_semialign
171+ , Unalign
172+#if MIN_VERSION_semialign(1,1,0)
173+ , Zip
174+#endif
163175#endif
164176 )
165177
src/Data/Map/Monoidal.hs+12
@@ -151,6 +151,12 @@ 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
154160
155161-- | A 'Map' with monoidal accumulation
156162newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
@@ -160,6 +166,12 @@ newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
160166 , Data, Typeable, Align
161167#if MIN_VERSION_these(0,8,0)
162168 , Semialign
169+#endif
170+#ifdef MIN_VERSION_semialign
171+ , Unalign
172+#if MIN_VERSION_semialign(1,1,0)
173+ , Zip
174+#endif
163175#endif
164176 )
165177
src/Data/Map/Monoidal/Strict.hs+12−2
@@ -151,6 +151,12 @@ 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
154160
155161-- | A 'Map' with monoidal accumulation
156162newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
@@ -160,6 +166,12 @@ newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
160166 , Data, Typeable, Align
161167#if MIN_VERSION_these(0,8,0)
162168 , Semialign
169+#endif
170+#ifdef MIN_VERSION_semialign
171+ , Unalign
172+#if MIN_VERSION_semialign(1,1,0)
173+ , Zip
174+#endif
163175#endif
164176 )
165177
@@ -687,5 +699,3 @@ maxViewWithKey = coerce (M.maxViewWithKey :: M.Map k a -> Maybe ((k, a), M.Map k
687699valid :: forall k a. Ord k => MonoidalMap k a -> Bool
688700valid = coerce (M.valid :: Ord k => M.Map k a -> Bool)
689701{-# INLINE valid #-}
690−
691−