git.iko.soy/monoidal-containers
on master help sign in
.travis.yml+124−110
since splitsnapshots
unifiedsplit
@@ -1,139 +1,153 @@
1# This Travis job script has been generated by a script via
1# This Travis job script has been generated by a script via
2#
2#
3−# runghc make_travis_yml_2.hs 'monoidal-containers.cabal'
3+# haskell-ci 'monoidal-containers.cabal' '-o' '.travis.yml'
4+#
5+# To regenerate the script (for example after adjusting tested-with) run
6+#
7+# haskell-ci regenerate
4#
8#
5# For more information, see https://github.com/haskell-CI/haskell-ci
9# For more information, see https://github.com/haskell-CI/haskell-ci
6#
10#
11+# version: 0.10.3
12+#
13+version: ~> 1.0
7language: c
14language: c
8−sudo: false
15+os: linux
9−
16+dist: xenial
10git:
17git:
11− submodules: false # whether to recursively clone submodules
18+ # whether to recursively clone submodules
12−
19+ submodules: false
13cache:
20cache:
14 directories:
21 directories:
15 - $HOME/.cabal/packages
22 - $HOME/.cabal/packages
16 - $HOME/.cabal/store
23 - $HOME/.cabal/store
17−
24+ - $HOME/.hlint
18before_cache:
25before_cache:
19− - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
26+ - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
20 # remove files that are regenerated by 'cabal update'
27 # remove files that are regenerated by 'cabal update'
21− - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.*
28+ - rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*
22− - rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json
29+ - rm -fv $CABALHOME/packages/hackage.haskell.org/*.json
23− - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache
30+ - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache
24− - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar
31+ - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
25− - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx
32+ - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
26−
27− - rm -rfv $HOME/.cabal/packages/head.hackage
33+ - rm -rfv $CABALHOME/packages/head.hackage
28−
34+jobs:
29−matrix:
30 include:
35 include:
31− - compiler: "ghc-8.6.1"
36+ - compiler: ghc-8.10.2
32− env: GHCHEAD=true
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"]}}
33− addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.6.1], sources: [hvr-ghc]}}
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
42+ - 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
34− - compiler: "ghc-8.4.3"
45+ - compiler: ghc-8.4.3
35− # env: TEST=--disable-tests BENCH=--disable-benchmarks
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"]}}
36− addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.4.3], sources: [hvr-ghc]}}
47+ os: linux
37− - compiler: "ghc-8.2.2"
48+ - compiler: ghc-8.2.2
38− # env: TEST=--disable-tests BENCH=--disable-benchmarks
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"]}}
39− addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.2.2], sources: [hvr-ghc]}}
50+ os: linux
40− - compiler: "ghc-8.0.2"
51+ - compiler: ghc-8.0.2
41− # env: TEST=--disable-tests BENCH=--disable-benchmarks
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"]}}
42− addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.0.2], sources: [hvr-ghc]}}
53+ os: linux
43− - compiler: "ghc-7.8.4"
54+ - compiler: ghc-7.8.4
44− # env: TEST=--disable-tests BENCH=--disable-benchmarks
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"]}}
45− addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-7.8.4], sources: [hvr-ghc]}}
56+ os: linux
46−
47− allow_failures:
48− - compiler: "ghc-8.6.1"
49−
50before_install:
57before_install:
51− - HC=${CC}
58+ - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
59+ - WITHCOMPILER="-w $HC"
60+ - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')
52− - HCPKG=${HC/ghc/ghc-pkg}
61+ - HCPKG="$HC-pkg"
53 - unset CC
62 - unset CC
54− - ROOTDIR=$(pwd)
63+ - CABAL=/opt/ghc/bin/cabal
55− - mkdir -p $HOME/.local/bin
64+ - CABALHOME=$HOME/.cabal
56− - "PATH=/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$HOME/local/bin:$PATH"
65+ - export PATH="$CABALHOME/bin:$PATH"
66+ - TOP=$(pwd)
57− - HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') ))
67+ - "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')"
58 - echo $HCNUMVER
68 - echo $HCNUMVER
59−
69+ - CABAL="$CABAL -vnormal+nowrap"
70+ - set -o pipefail
71+ - TEST=--enable-tests
72+ - BENCH=--enable-benchmarks
73+ - HEADHACKAGE=false
74+ - rm -f $CABALHOME/config
75+ - |
76+ echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
77+ echo "remote-build-reporting: anonymous" >> $CABALHOME/config
78+ echo "write-ghc-environment-files: always" >> $CABALHOME/config
79+ echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
80+ echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
81+ echo "world-file: $CABALHOME/world" >> $CABALHOME/config
82+ echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
83+ echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
84+ echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
85+ echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
86+ echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
87+ echo "install-dirs user" >> $CABALHOME/config
88+ echo " prefix: $CABALHOME" >> $CABALHOME/config
89+ echo "repository hackage.haskell.org" >> $CABALHOME/config
90+ echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
60install:
91install:
61− - cabal --version
92+ - ${CABAL} --version
62 - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
93 - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
63− - BENCH=${BENCH---enable-benchmarks}
64− - TEST=${TEST---enable-tests}
65− - HADDOCK=${HADDOCK-true}
66− - UNCONSTRAINED=${UNCONSTRAINED-true}
67− - NOINSTALLEDCONSTRAINTS=${NOINSTALLEDCONSTRAINTS-false}
68− - GHCHEAD=${GHCHEAD-false}
69− - travis_retry cabal update -v
70− - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
71− - rm -fv cabal.project cabal.project.local
72− # Overlay Hackage Package Index for GHC HEAD: https://github.com/hvr/head.hackage
73 - |
94 - |
74− if $GHCHEAD; then
95+ echo "program-default-options" >> $CABALHOME/config
75− sed -i 's/-- allow-newer: .*/allow-newer: *:base/' ${HOME}/.cabal/config
96+ echo " ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config
76− for pkg in $($HCPKG list --simple-output); do pkg=$(echo $pkg | sed 's/-[^-]*$//'); sed -i "s/allow-newer: /allow-newer: *:$pkg, /" ${HOME}/.cabal/config; done
97+ - cat $CABALHOME/config
77−
98+ - rm -fv cabal.project cabal.project.local cabal.project.freeze
78− echo 'repository head.hackage' >> ${HOME}/.cabal/config
99+ - travis_retry ${CABAL} v2-update -v
79− echo ' url: http://head.hackage.haskell.org/' >> ${HOME}/.cabal/config
100+ # Generate cabal.project
80− echo ' secure: True' >> ${HOME}/.cabal/config
101+ - rm -rf cabal.project cabal.project.local cabal.project.freeze
81− echo ' root-keys: 07c59cb65787dedfaef5bd5f987ceb5f7e5ebf88b904bbd4c5cbdeb2ff71b740' >> ${HOME}/.cabal/config
102+ - touch cabal.project
82− echo ' 2e8555dde16ebd8df076f1a8ef13b8f14c66bad8eafefd7d9e37d0ed711821fb' >> ${HOME}/.cabal/config
103+ - |
83− echo ' 8f79fd2389ab2967354407ec852cbe73f2e8635793ac446d09461ffb99527f6e' >> ${HOME}/.cabal/config
84− echo ' key-threshold: 3' >> ${HOME}/.cabal.config
85−
86− grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
87−
88− cabal new-update head.hackage -v
89− fi
90− - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
91− - "printf 'packages: \".\"\\n' > cabal.project"
104+ echo "packages: ." >> cabal.project
92− - touch cabal.project.local
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"
107+ - |
93− - "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | grep -vw -- monoidal-containers | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
108+ - "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"
94 - cat cabal.project || true
109 - cat cabal.project || true
95 - cat cabal.project.local || true
110 - cat cabal.project.local || true
96− - if [ -f "./configure.ac" ]; then
111+ - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
97− (cd "." && autoreconf -i);
112+ - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH}
98− fi
113+ - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
99− - rm -f cabal.project.freeze
114+ - rm cabal.project.freeze
100− - cabal new-build -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dep -j2 all
115+ - travis_wait 40 ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} --dep -j2 all
101− - cabal new-build -w ${HC} --disable-tests --disable-benchmarks --project-file="cabal.project" --dep -j2 all
116+ - travis_wait 40 ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --dep -j2 all
102− - rm -rf .ghc.environment.* "."/dist
103− - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
104−
105−# Here starts the actual work to be performed for the package under test;
106−# any command which exits with a non-zero exit code causes the build to fail.
107script:
117script:
108− # test that source-distributions can be generated
118+ - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
109− - (cd "." && cabal sdist)
119+ # Packaging...
120+ - ${CABAL} v2-sdist all
121+ # Unpacking...
110− - mv "."/dist/monoidal-containers-*.tar.gz ${DISTDIR}/
122+ - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
111 - cd ${DISTDIR} || false
123 - cd ${DISTDIR} || false
112− - find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
124+ - find . -maxdepth 1 -type f -name '*.tar.gz' -exec tar -xvf '{}' \;
125+ - find . -maxdepth 1 -type f -name '*.tar.gz' -exec rm '{}' \;
126+ - PKGDIR_monoidal_containers="$(find . -maxdepth 1 -type d -regex '.*/monoidal-containers-[0-9.]*')"
127+ # Generate cabal.project
128+ - rm -rf cabal.project cabal.project.local cabal.project.freeze
129+ - touch cabal.project
130+ - |
113− - "printf 'packages: monoidal-containers-*/*.cabal\\n' > cabal.project"
131+ echo "packages: ${PKGDIR_monoidal_containers}" >> cabal.project
114− - touch cabal.project.local
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"
134+ - |
115− - "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | grep -vw -- monoidal-containers | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
135+ - "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"
116 - cat cabal.project || true
136 - cat cabal.project || true
117 - cat cabal.project.local || true
137 - cat cabal.project.local || true
138+ # Building...
118 # this builds all libraries and executables (without tests/benchmarks)
139 # this builds all libraries and executables (without tests/benchmarks)
119− - cabal new-build -w ${HC} --disable-tests --disable-benchmarks all
140+ - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
120−
141+ # Building with tests and benchmarks...
121 # build & run tests, build benchmarks
142 # build & run tests, build benchmarks
122− - cabal new-build -w ${HC} ${TEST} ${BENCH} all
143+ - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all
123−
124− # cabal check
144+ # cabal check...
125− - (cd monoidal-containers-* && cabal check)
145+ - (cd ${PKGDIR_monoidal_containers} && ${CABAL} -vnormal check)
126−
127− # haddock
146+ # haddock...
128− - rm -rf ./dist-newstyle
147+ - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all
129− - if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
130−
131− # Build without installed constraints for packages in global-db
148+ # Building without installed constraints for packages in global-db...
132− - if $UNCONSTRAINED; then rm -f cabal.project.local; echo cabal new-build -w ${HC} --disable-tests --disable-benchmarks all; else echo "Not building without installed constraints"; fi
149+ - rm -f cabal.project.local
133−
150+ - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
134− # Build with split-these set to false
151+
135− - cabal new-configure -f-split-these
136− - cabal new-build -w ${HC} ${TEST} ${BENCH} all
137−
138−# REGENDATA ["monoidal-containers.cabal"]
152+# REGENDATA ("0.10.3",["monoidal-containers.cabal","-o",".travis.yml"])
139# EOF
153# EOF
Changelog.md+4
@@ -1,5 +1,9 @@
1# Monoidal containers
1# Monoidal containers
2
2
3+# 0.6.0.1
4+
5+ * Support semialign-1.1
6+
3# 0.6
7# 0.6
4
8
5 * 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).
9 * 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 @@
1name: monoidal-containers
1name: monoidal-containers
2−version: 0.6
2+version: 0.6.0.1
3synopsis: Containers with monoidal accumulation
3synopsis: Containers with monoidal accumulation
4description:
4description:
5 Containers with merging via monoidal accumulation. The 'Monoid' instances
5 Containers with merging via monoidal accumulation. The 'Monoid' instances
@@ -24,7 +24,7 @@ category: Data
24build-type: Simple
24build-type: Simple
25cabal-version: >=1.10
25cabal-version: >=1.10
26extra-source-files: Changelog.md
26extra-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.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
28
28
29source-repository head
29source-repository head
30 type: git
30 type: git
@@ -46,8 +46,8 @@ library
46 GeneralizedNewtypeDeriving,
46 GeneralizedNewtypeDeriving,
47 DeriveTraversable,
47 DeriveTraversable,
48 DeriveDataTypeable
48 DeriveDataTypeable
49− build-depends: base >=4.5 && <4.13,
49+ build-depends: base >=4.7 && <4.16,
50− aeson >=1.0 && <1.5,
50+ aeson >=1.0 && <1.6,
51 containers >=0.5 && <0.7,
51 containers >=0.5 && <0.7,
52 deepseq >=1.3 && <1.5,
52 deepseq >=1.3 && <1.5,
53 unordered-containers >= 0.2 && < 0.3,
53 unordered-containers >= 0.2 && < 0.3,
@@ -57,9 +57,8 @@ library
57 semigroups >= 0.18 && < 0.20
57 semigroups >= 0.18 && < 0.20
58
58
59 if flag(split-these)
59 if flag(split-these)
60− build-depends: these >= 1 && <1.1,
60+ build-depends: these >= 1 && <1.2,
61− semialign >=1 && <1.1
61+ semialign >=1 && <1.2
62−
63 else
62 else
64 build-depends: these >= 0.7 && <0.9
63 build-depends: these >= 0.7 && <0.9
65
64
src/Data/HashMap/Monoidal.hs+12
@@ -60,6 +60,12 @@ import Data.Hashable.Lifted (Hashable1)
60import Control.Lens
60import Control.Lens
61import Control.Newtype
61import Control.Newtype
62import Data.Align
62import 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
63
69
64-- | A 'HashMap' with monoidal accumulation
70-- | A 'HashMap' with monoidal accumulation
65newtype MonoidalHashMap k a = MonoidalHashMap { getMonoidalHashMap :: M.HashMap k a }
71newtype MonoidalHashMap k a = MonoidalHashMap { getMonoidalHashMap :: M.HashMap k a }
@@ -70,6 +76,12 @@ newtype MonoidalHashMap k a = MonoidalHashMap { getMonoidalHashMap :: M.HashMap
70#endif
76#endif
71#if MIN_VERSION_these(0,8,0)
77#if MIN_VERSION_these(0,8,0)
72 , Semialign
78 , Semialign
79+#endif
80+#ifdef MIN_VERSION_semialign
81+ , Unalign
82+#if MIN_VERSION_semialign(1,1,0)
83+ , Zip
84+#endif
73#endif
85#endif
74 )
86 )
75
87
src/Data/IntMap/Monoidal.hs+12
@@ -151,6 +151,12 @@ import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1)
151import Data.Functor.Classes
151import Data.Functor.Classes
152#endif
152#endif
153import Data.Align
153import 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
154
160
155-- | An 'IntMap' with monoidal accumulation
161-- | An 'IntMap' with monoidal accumulation
156newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
162newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
@@ -160,6 +166,12 @@ newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
160 Data, Typeable, Align
166 Data, Typeable, Align
161#if MIN_VERSION_these(0,8,0)
167#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
163#endif
175#endif
164 )
176 )
165
177
src/Data/IntMap/Monoidal/Strict.hs+13−1
@@ -151,6 +151,12 @@ import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1)
151import Data.Functor.Classes
151import Data.Functor.Classes
152#endif
152#endif
153import Data.Align
153import 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
154
160
155-- | An 'IntMap' with monoidal accumulation
161-- | An 'IntMap' with monoidal accumulation
156newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
162newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
@@ -159,7 +165,13 @@ newtype MonoidalIntMap a = MonoidalIntMap { getMonoidalIntMap :: M.IntMap a }
159 FromJSON, ToJSON, FromJSON1, ToJSON1,
165 FromJSON, ToJSON, FromJSON1, ToJSON1,
160 Data, Typeable, Align
166 Data, Typeable, Align
161#if MIN_VERSION_these(0,8,0)
167#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
163#endif
175#endif
164 )
176 )
165
177
src/Data/Map/Monoidal.hs+12
@@ -151,6 +151,12 @@ import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1)
151import Data.Functor.Classes
151import Data.Functor.Classes
152#endif
152#endif
153import Data.Align
153import 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
154
160
155-- | A 'Map' with monoidal accumulation
161-- | A 'Map' with monoidal accumulation
156newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
162newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
@@ -160,6 +166,12 @@ newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
160 , Data, Typeable, Align
166 , Data, Typeable, Align
161#if MIN_VERSION_these(0,8,0)
167#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
163#endif
175#endif
164 )
176 )
165
177
src/Data/Map/Monoidal/Strict.hs+12−2
@@ -151,6 +151,12 @@ import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1)
151import Data.Functor.Classes
151import Data.Functor.Classes
152#endif
152#endif
153import Data.Align
153import 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
154
160
155-- | A 'Map' with monoidal accumulation
161-- | A 'Map' with monoidal accumulation
156newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
162newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
@@ -160,6 +166,12 @@ newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a }
160 , Data, Typeable, Align
166 , Data, Typeable, Align
161#if MIN_VERSION_these(0,8,0)
167#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
163#endif
175#endif
164 )
176 )
165
177
@@ -687,5 +699,3 @@ maxViewWithKey = coerce (M.maxViewWithKey :: M.Map k a -> Maybe ((k, a), M.Map k
687valid :: forall k a. Ord k => MonoidalMap k a -> Bool
699valid :: forall k a. Ord k => MonoidalMap k a -> Bool
688valid = coerce (M.valid :: Ord k => M.Map k a -> Bool)
700valid = coerce (M.valid :: Ord k => M.Map k a -> Bool)
689{-# INLINE valid #-}
701{-# INLINE valid #-}
690−
691−