Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite Data.IntMap to be faster and use less memory #340

Open
wants to merge 147 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
ce198ae
Improve the Data.IntMap.mergeWithKey test to test more cases and have…
gereeter Dec 29, 2019
9856cbe
Rewrite Data.IntMap to be faster and use less memory
gereeter Sep 13, 2016
ff87e09
Use a local version of Identity on old versions of base
gereeter Sep 13, 2016
218959b
Stop requiring EmptyDataDecls
gereeter Sep 13, 2016
5c01e56
Stop requiring ScopedTypeVariables
gereeter Sep 13, 2016
c90c027
Only implement foldr' and foldl' in Foldable for later bases
gereeter Sep 13, 2016
11e2cc0
Properly import Applicative for when it isn't in the Prelude
gereeter Sep 13, 2016
231db1a
Use foldl' from Data.List instead of from Data.Foldable
gereeter Sep 13, 2016
e0f7a37
Add a bunch of safety annotations to the new IntMap code
gereeter Sep 13, 2016
24d7d2c
Mark Data.IntMap.Merge.Internal as Trustworth when Data.Coerce is used
gereeter Sep 13, 2016
0453b32
Undo a misguided constant argument capture in intersection
gereeter Sep 13, 2016
6f91acf
Add an incredibly hacky way to improve the worst-case performance of …
gereeter Sep 14, 2016
97e05ba
Reorganize union to separately handle disjoint and non-disjoint maps
gereeter Sep 14, 2016
a2fb9d0
Minor cleanup for union
gereeter Sep 14, 2016
8a98e3e
Update unionWithKey to match recent changes to union
gereeter Sep 14, 2016
b81e3d0
Remove a misguided constant argument capture in difference
gereeter Sep 14, 2016
4ce5031
Remove a redundant strict pair type
gereeter Sep 15, 2016
d78be1a
Add type signatures to unionDisjoint*
gereeter Sep 15, 2016
cb5f54c
Update merge to match union, separately handling disjoint maps. This …
gereeter Sep 15, 2016
50cb1e2
Clarify copyright lines of Data.IntMap
gereeter Sep 16, 2016
62add14
Optimize fromAscList and friends
gereeter Sep 17, 2016
b3d3f71
Implement Semigroup for IntMap
gereeter Sep 18, 2016
7753370
Add a few small comments
gereeter Sep 19, 2016
86c02f0
Combine equivalent unionDisjoint functions
gereeter Sep 19, 2016
b873f29
Add comments explaining the merging process in Data.IntMap.Merge.Inte…
gereeter Sep 20, 2016
5ac00bb
Add some comments explaining how insert works.
gereeter Jan 2, 2018
d77ab79
Adjust insertWith to not capture the combining function, recovering p…
gereeter Jan 3, 2018
69a0b20
Implement IntMap.!?
gereeter Jan 3, 2018
4ced1c4
Implement IntMap.lookup{Min,Max}.
gereeter Jan 3, 2018
e8e8941
Revert "Add an incredibly hacky way to improve the worst-case perform…
gereeter Jan 4, 2018
819929f
Fix rebase errors
gereeter Dec 17, 2019
cddead9
Implement disjoint based on intersection
gereeter Dec 17, 2019
f523b2c
Generalize IntMap.Merge.Internal.WhenMissing in preparation for mergeA
gereeter Dec 17, 2019
2e018f6
Fix strictness of IntMap.Merge.Strict.mapMaybeMissing
gereeter Dec 17, 2019
cae5fea
Implement IntMap.Merge.Internal.mergeA.
gereeter Dec 18, 2019
c2f373a
Add applicative tactics to IntMap.Merge.*
gereeter Dec 18, 2019
1a5c3d3
Add miscellaneous functions on tactics (run*) to IntMap.Merge.*
gereeter Dec 18, 2019
fd38f9b
Use some patterns from mergeA to simplify merge slightly
gereeter Dec 18, 2019
05b357f
When testing IntMap's merge, print out the tree structure of the coun…
gereeter Dec 26, 2019
b8e70a0
Fix rebase errors (conflicting Identity, deleted traverseMaybeWithKey)
gereeter Dec 26, 2019
fa15d43
Statically track whether keys in an IntMap are acting as a minimum (B…
gereeter Dec 26, 2019
0288e28
Undo unintentional changes to tests and deprecated functions
gereeter Dec 26, 2019
d5f502e
Document the new IntMap structure by importing the original explanati…
gereeter Dec 26, 2019
f62ccd5
Edit IntMap.Internal derivation documentation
gereeter Dec 26, 2019
d2f723f
Fix remnant of Markdown syntax
gereeter Dec 26, 2019
5b058a0
Adjust CPP guards and pragmas to be more correct
gereeter Dec 26, 2019
48f2285
Temporarily disable the broken implementation of merge
gereeter Dec 26, 2019
f8fcd12
Fix versioning of imports, only importing things that are available a…
gereeter Dec 26, 2019
de768a8
Move import to be before definitions on GHC 7.8
gereeter Dec 27, 2019
6cd5441
Further old GHC import fixes
gereeter Dec 27, 2019
18ed736
Reinstate traverseMaybeWithKey tests to test traverseMaybeMissing
gereeter Dec 27, 2019
11b7f97
Inline foldlWithKey' and foldrWithKey', finally fixing the major perf…
gereeter Dec 27, 2019
197510b
Use EmptyDataDecls
gereeter Dec 28, 2019
e119d79
Prefer bang patterns for specifying strictness
gereeter Dec 28, 2019
ee45af1
Favor liftA* over <$> and <*> in case there is a more efficient overr…
gereeter Dec 28, 2019
8792fe0
Fix review nit
gereeter Dec 28, 2019
6e78bac
Add specifialized Foldable method implementations.
gereeter Dec 28, 2019
1124dfc
Move the IntMap guard around using type families to a constant in con…
gereeter Dec 28, 2019
bb3fa48
Add type alias definitions to intro documentation of Data.IntMap.Inte…
gereeter Dec 28, 2019
fb8d3fa
Improve, extend, and generalize IntMap tests
gereeter Dec 28, 2019
8c47cba
Only test elem where it exists
gereeter Dec 29, 2019
82e121c
Add some more documentation to the core types of Data.IntMap
gereeter Dec 29, 2019
abc68b5
Fix moved #include left out from previous commit
gereeter Dec 29, 2019
c9e4f47
Unify the IntMap insert* implementations into one INLINEd strictness-…
gereeter Dec 30, 2019
8066892
Speed up Data.IntMap.size by using an accumulator
gereeter Dec 30, 2019
642894f
Make bench-cmp output a summary
gereeter Dec 30, 2019
add1e51
Document Data.IntMap.Internal.insertWithEval
gereeter Dec 30, 2019
2fd6e01
Benchmark both when functions find the key they are looking for and w…
gereeter Dec 30, 2019
b3876a5
Make IntMap benchmarks actually test what they claim to
gereeter Dec 30, 2019
ed98bb1
Add customization back to Data.IntMap.Internal.Debug and default to a…
gereeter Dec 30, 2019
ab3b733
Fix typos in Data.IntMap.isSubmapOf and friends
gereeter Dec 30, 2019
56f604a
Use the box-drawing tree syntax in documentation
gereeter Dec 30, 2019
2f21e29
Implement type classes for IntMap
gereeter Dec 31, 2019
e1a1d85
Import <$ where necessary
gereeter Dec 31, 2019
d7e9432
Fix incorrect method name in Read1
gereeter Dec 31, 2019
6d1cd90
Move the danger of IsList into a helper module so that IntMap.Interna…
gereeter Dec 31, 2019
aa291c5
Add an export list to Data.IntMap.Internal
gereeter Jan 7, 2020
59fcfd2
Unify lookup-style functions into one INLINE lookupChurch function
gereeter Jan 7, 2020
ab3f797
Remove now-unused LookupGE tests for IntMap
gereeter Jan 8, 2020
6f11681
Use appropriate NOINLINE pragmas to ensure that functions defined tri…
gereeter Jan 8, 2020
a0cc309
Update IntMap copyright lines
gereeter Jan 8, 2020
e82e21a
Re-enable list fusion for the IntMap conversion-to-list functions
gereeter Jan 8, 2020
e4eb359
Add an export list to Data.IntMap.Merge.Internal
gereeter Jan 8, 2020
9a2df5c
Don't bind the combination function in Data.IntMap.unionWith
gereeter Jan 8, 2020
3a34c09
Don't bind arguments in IntMap.intersectionWith. This may have been p…
gereeter Jan 9, 2020
5e1d0aa
Make IntMap.{min,max}View{,WithKey} more strict, forcing the min/max …
gereeter Jan 9, 2020
b3660e9
Don't incorrectly use BangPatterns nested in another pattern
gereeter Jan 9, 2020
aa5fbd5
Implement the IntMap min/max manipulation functions more directly
gereeter Jan 9, 2020
122b4c3
Implement IntMap.update{Min,Max}{,WithKey} more directly
gereeter Jan 9, 2020
a5393eb
Don't bind arguments in Data.IntMap.Strict.intersectionWithKey (and f…
gereeter Jan 9, 2020
fa69caa
Move IntMap validity testing into Data.IntMap.Internal.Debug and retu…
gereeter Jan 10, 2020
4ef6879
Tweak validity checking: use neutral language so that explanations ap…
gereeter Jan 10, 2020
1feff6c
Delete outdated TODOs
gereeter Jan 10, 2020
13b4629
Replace the boolean bound comparison tests in IntMap with a 3-variant…
gereeter Jan 10, 2020
553e5ec
Unify the handling of singleton maps in IntMap.delete and update{,Loo…
gereeter Jan 10, 2020
1e8abad
Simplify IntMap.delete by inlining the useless internal function
gereeter Jan 11, 2020
4fd6f01
Use strict pairs for intermediates and don't bind arguments in update…
gereeter Jan 11, 2020
65962aa
Reinstate the remaining IntMap RULES
gereeter Jan 11, 2020
93180ee
Don't bind arguments in differenceWith
gereeter Jan 11, 2020
637ac76
Fix major bug in IntMap.differenceWith: parts of the code matched dif…
gereeter Jan 11, 2020
535e44c
Improve IntMap tests, using a faster 'sort'-based 'nub' and using '==…
gereeter Jan 11, 2020
814eb67
Handle zeros a bit more cleanly in bench-cmp.sh
gereeter Jan 12, 2020
7ba86c8
Slightly simplify IntMap.Internal.compareMSB to not bother checking f…
gereeter Jan 12, 2020
dc0ee84
Manually worker-wrapper transform IntMap.{union,difference,intersecti…
gereeter Jan 12, 2020
a1827a8
Be explicitly strict in `IntMap.difference*`
gereeter Jan 13, 2020
ba74413
Fix IntMap.Strict.differenceWith typo
gereeter Jan 13, 2020
01dd1c5
Undo unintended change
gereeter Jan 13, 2020
ea2702a
Improve deletion-related documentation
gereeter Jan 14, 2020
b6e12e6
Address small documentation nits
gereeter Jan 14, 2020
9c2ac02
Reference fromDistinctAscList in Data.IntMap.BuildStack's documentati…
gereeter Jan 14, 2020
6568108
INLINE IntMap fold and traverse variants
gereeter Jan 14, 2020
4ebf972
Worker/wrapper transform filter-style functions in IntMap
gereeter Jan 14, 2020
996b0ec
Remove the broken implementation of IntMap.merge and replace it with …
gereeter Jan 16, 2020
3c30fcd
Pull more helper functions out of IntMap.mergeA to make it more regul…
gereeter Jan 16, 2020
754bace
Add a TODO for further optimization of IntMap.mergeA
gereeter Jan 16, 2020
95346c4
Make IntMap.mergeA intermediates be 'Node's instead of 'IntMap_'s. Th…
gereeter Jan 16, 2020
49bebc6
Add a unboxed wrapper around boundKey to ease manual worker-wrapper t…
gereeter Jan 16, 2020
a7ca862
Manually worker-wrapper transform IntMap merge tactics
gereeter Jan 16, 2020
7d0f635
Force a good match order in IntMap.delete{MinL,MaxR}
gereeter Jan 16, 2020
2a62f6f
INLINE IntMap.mergeA as we promise in the documentation. Also mark th…
gereeter Jan 18, 2020
3b6a29a
Minor nits and fixes:
gereeter Jan 18, 2020
205e2a8
Make IntMap.lookupChurch inline after two arguments, not three, makin…
gereeter Jan 18, 2020
a9655f9
Remove unnecessary special case in IntMap.union, regularizing which a…
gereeter Jan 19, 2020
6a81914
Force inlining of some trivial IntMap functions.
gereeter Jan 21, 2020
dd904e2
Add long-form merge documentation for IntMap
gereeter Jan 23, 2020
4fe194f
Consistently use capitalized XOR in IntMap documentation
gereeter Jan 23, 2020
cf63d2f
Move the bin{NodeMapL,MapNodeR} helpers into Data.IntMap.Internal and…
gereeter Jan 23, 2020
4058ee8
Small modifications (@since in docs, a missing doc example, and more …
gereeter Jan 23, 2020
76d9947
Implement the appropriate type classes for IntMap merge tactics
gereeter Jan 23, 2020
57badfe
Use the explicitly imported reference to Foldable
gereeter Jan 23, 2020
4e3987e
Implement mapping functions over IntMap tactics
gereeter Jan 23, 2020
db80555
Import <$ where necessary
gereeter Jan 23, 2020
c00a1c8
Fix isProperSubmapOfBy documentation to refer to the keys of the two …
gereeter Jan 23, 2020
ffefb3e
Test IntMap merge tactics
gereeter Jan 23, 2020
afab90f
Implement sum and product in terms of strict folds on IntMap
gereeter Jan 23, 2020
2e63882
Unify implementations of merge tactics and top-level functions for In…
gereeter Jan 23, 2020
d0b04c9
Use runIdentity in tests when comparing the results of Applicative fu…
gereeter Jan 23, 2020
9644321
Fix capitalization typo
gereeter Jan 23, 2020
6e9668c
Compare IntMaps instead of lists where possible in tests.
gereeter Jan 23, 2020
49caed0
Test splitLookup with QuickCheck
gereeter Jan 23, 2020
beb38f7
Test IntMap.insertLookupWithKey with QuickCheck
gereeter Jan 23, 2020
cdf0368
Slight improvement to unionSum test
gereeter Jan 23, 2020
9ed6256
Test deletion/update functions on IntMap with QuickCheck
gereeter Jan 23, 2020
bc33c32
Remove unused arguments from helpers in IntMap.{adjust,update,updateL…
gereeter Jan 23, 2020
fedcd58
Test map{Maybe,Either}{,WithKey} for IntMap using QuickCheck
gereeter Jan 23, 2020
b488004
Don't optimize the IntMap tests.
gereeter Jan 23, 2020
49b6997
Re-enable optimization for IntMap tests to ensure testing of rewrite …
gereeter Jan 24, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 21 additions & 11 deletions containers-tests/benchmarks/IntMap.hs
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,12 @@ import Prelude hiding (lookup)
main = do
let m = M.fromAscList elems :: M.IntMap Int
evaluate $ rnf [m]
evaluate $ rnf missKeys
defaultMain
[ bench "lookup" $ whnf (lookup keys) m
, bench "insert" $ whnf (ins elems) M.empty
[ bench "size" $ whnf M.size m
, bench "lookup hit" $ whnf (lookup keys) m
, bench "lookup miss" $ whnf (lookup missKeys) m
, bench "insert empty" $ whnf (ins elems) M.empty
, bench "insertWith empty" $ whnf (insWith elems) M.empty
, bench "insertWith update" $ whnf (insWith elems) m
, bench "insertWith' empty" $ whnf (insWith' elems) M.empty
Expand All @@ -28,13 +31,18 @@ main = do
, bench "insertLookupWithKey update" $ whnf (insLookupWithKey elems) m
, bench "map" $ whnf (M.map (+ 1)) m
, bench "mapWithKey" $ whnf (M.mapWithKey (+)) m
, bench "foldlWithKey" $ whnf (ins elems) m
, bench "foldlWithKey" $ whnf (M.foldlWithKey consPairL []) m
, bench "foldlWithKey'" $ whnf (M.foldlWithKey' sum 0) m
, bench "foldrWithKey" $ whnf (M.foldrWithKey consPair []) m
, bench "delete" $ whnf (del keys) m
, bench "update" $ whnf (upd keys) m
, bench "updateLookupWithKey" $ whnf (upd' keys) m
, bench "alter" $ whnf (alt keys) m
, bench "foldrWithKey" $ whnf (M.foldrWithKey consPairR []) m
, bench "foldrWithKey'" $ whnf (M.foldrWithKey' sum 0) m
, bench "delete hit" $ whnf (del keys) m
, bench "delete miss" $ whnf (del missKeys) m
, bench "update hit" $ whnf (upd keys) m
, bench "update miss" $ whnf (upd missKeys) m
, bench "updateLookupWithKey hit" $ whnf (upd' keys) m
, bench "updateLookupWithKey miss" $ whnf (upd' missKeys) m
, bench "alter hit" $ whnf (alt keys) m
, bench "alter miss" $ whnf (alt missKeys) m
, bench "mapMaybe" $ whnf (M.mapMaybe maybeDel) m
, bench "mapMaybeWithKey" $ whnf (M.mapMaybeWithKey (const maybeDel)) m
, bench "fromList" $ whnf M.fromList elems
Expand All @@ -45,10 +53,12 @@ main = do
]
where
elems = zip keys values
keys = [1..2^12]
values = [1..2^12]
keys = [1,3..2^13]
missKeys = [0,2..2^13]
values = [1,3..2^13]
sum k v1 v2 = k + v1 + v2
consPair k v xs = (k, v) : xs
consPairL xs k v = (k, v) : xs
consPairR k v xs = (k, v) : xs

add3 :: Int -> Int -> Int -> Int
add3 x y z = x + y + z
Expand Down
4 changes: 1 addition & 3 deletions containers-tests/benchmarks/LookupGE/IntMap.hs
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ main = do
, \(n,fun) -> bench (n++" !far") $ nf (fge2 fun odds) m_large
]
funs1 = [ ("GE split", M.lookupGE1)
, ("GE Craig", M.lookupGE2)
, ("GE Twan", M.lookupGE3)
, ("GE Milan", M.lookupGE4) ]
, ("GE direct", M.lookupGE2) ]

fge :: (Int -> M.IntMap Int -> Maybe (Int,Int)) -> [Int] -> M.IntMap Int -> (Int,Int)
fge fun xs m = foldl' (\n k -> fromMaybe n (fun k m)) (0,0) xs
Expand Down
64 changes: 2 additions & 62 deletions containers-tests/benchmarks/LookupGE/LookupGE_IntMap.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,63 +10,8 @@ lookupGE1 k m =
(_,Just v,_) -> Just (k,v)
(_,Nothing,r) -> findMinMaybe r

lookupGE2 :: Key -> IntMap a -> Maybe (Key,a)
lookupGE2 k t = case t of
Bin _ m l r | m < 0 -> if k >= 0
then go l
else case go r of
Nothing -> Just $ findMin l
justx -> justx
_ -> go t
where
go (Bin p m l r)
| nomatch k p m = if k < p
then Just $ findMin l
else Nothing
| zero k m = case go l of
Nothing -> Just $ findMin r
justx -> justx
| otherwise = go r
go (Tip ky y)
| k > ky = Nothing
| otherwise = Just (ky, y)
go Nil = Nothing

lookupGE3 :: Key -> IntMap a -> Maybe (Key,a)
lookupGE3 k t = k `seq` case t of
Bin _ m l r | m < 0 -> if k >= 0
then go Nothing l
else go (Just (findMin l)) r
_ -> go Nothing t
where
go def (Bin p m l r)
| nomatch k p m = if k < p then Just $ findMin l else def
| zero k m = go (Just $ findMin r) l
| otherwise = go def r
go def (Tip ky y)
| k > ky = def
| otherwise = Just (ky, y)
go def Nil = def

lookupGE4 :: Key -> IntMap a -> Maybe (Key,a)
lookupGE4 k t = k `seq` case t of
Bin _ m l r | m < 0 -> if k >= 0 then go Nil l
else go l r
_ -> go Nil t
where
go def (Bin p m l r)
| nomatch k p m = if k < p then fMin l else fMin def
| zero k m = go r l
| otherwise = go def r
go def (Tip ky y)
| k > ky = fMin def
| otherwise = Just (ky, y)
go def Nil = fMin def

fMin :: IntMap a -> Maybe (Key, a)
fMin Nil = Nothing
fMin (Tip ky y) = Just (ky, y)
fMin (Bin _ _ l _) = fMin l
lookupGE2 = lookupGE

-------------------------------------------------------------------------------
-- Utilities
Expand All @@ -85,10 +30,5 @@ findMinMaybe m

prop_lookupGE12 :: Int -> [Int] -> Bool
prop_lookupGE12 x xs = case fromList $ zip xs xs of m -> lookupGE1 x m == lookupGE2 x m

prop_lookupGE13 :: Int -> [Int] -> Bool
prop_lookupGE13 x xs = case fromList $ zip xs xs of m -> lookupGE1 x m == lookupGE3 x m

prop_lookupGE14 :: Int -> [Int] -> Bool
prop_lookupGE14 x xs = case fromList $ zip xs xs of m -> lookupGE1 x m == lookupGE4 x m
#endif

Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,12 @@ module Main where
import Data.IntMap as C
import SetOperations

main = benchmark (\xs -> fromList [(x, x) | x <- xs]) True [("union", C.union), ("difference", C.difference), ("intersection", C.intersection)]
main = benchmark (\xs -> fromList [(x, x) | x <- xs]) True
[ ("union", C.union)
, ("unionWith", C.unionWith (+))
, ("difference", C.difference)
, ("differenceWith (keep)", C.differenceWith (\a b -> Just (a + b)))
, ("differenceWith (delete)", C.differenceWith (\_ _ -> Nothing))
, ("intersection", C.intersection)
, ("intersectionWith", C.intersectionWith (+))
]
36 changes: 35 additions & 1 deletion containers-tests/benchmarks/bench-cmp.pl
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,49 @@
my $l2 = <$f2>;
$l1 eq $l2 or die "CSV files do not correspond -- $l1 and $l2";

my $min = 1e50;
my $mult = 1.0;
my $max = 0.0;
my $count = 0;

while (defined($l1 = <$f1>)) {
$l2 = <$f2>;

my @parts1 = split /,/, $l1;
my @parts2 = split /,/, $l2;

$parts1[0] eq $parts2[0] or die "CSV files do not correspond -- $parts1[0] and $parts2[0]";
printf "%s;%+7.2f%%;%.2e\n", $parts1[0], 100 * $parts2[1] / $parts1[1] - 100, $parts1[1];

my $factor;
if ($parts1[1] == 0) {
if ($parts2[1] == 0) {
$factor = 1;
} else {
$factor = 'inf';
}
} else {
$factor = $parts2[1] / $parts1[1];
}
$count = $count + 1;
$mult = $mult * $factor;
if ($factor > $max) {
$max = $factor;
}
if ($factor < $min) {
$min = $factor;
}

if ($factor == 'inf') {
printf "%s;%.2e;%.2e\n", $parts1[0], $parts2[1], $parts1[1];
} else {
printf "%s;%+7.2f%%;%.2e\n", $parts1[0], 100 * $factor - 100, $parts1[1];
}
}

printf ";\n";
printf "Minimum;%+7.2f%%\n", ($min - 1.0)*100;
printf "Average;%+7.2f%%\n", (($mult ** (1.0 / $count)) - 1.0) * 100;
printf "Maximum;%+7.2f%%\n", ($max - 1.0) * 100;

close $f2;
close $f1;
9 changes: 4 additions & 5 deletions containers-tests/containers-tests.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ library
Data.IntMap.Internal
Data.IntMap.Internal.Debug
Data.IntMap.Lazy
Data.IntMap.Merge.Internal
Data.IntMap.Merge.Lazy
Data.IntMap.Merge.Strict
Data.IntMap.Strict
Data.IntMap.Strict.Internal
Data.IntSet
Data.IntSet.Internal
Data.Map
Expand Down Expand Up @@ -90,6 +90,7 @@ library
Data.IntMap.Internal.DeprecatedDebug
Data.Map.Internal.DeprecatedShowTree
Utils.Containers.Internal.TypeError
Utils.Containers.Internal.IsList

if impl(ghc >= 8.6)
ghc-options: -Werror
Expand Down Expand Up @@ -319,14 +320,13 @@ test-suite intmap-lazy-properties
hs-source-dirs: tests
main-is: intmap-properties.hs
type: exitcode-stdio-1.0
other-modules: IntMapValidity
build-depends: containers-tests
build-depends:
array >=0.4.0.0
, base >=4.6 && <5
, deepseq >=1.2 && <1.5

ghc-options: -O2
ghc-options: -O1
other-extensions:
BangPatterns
CPP
Expand All @@ -343,14 +343,13 @@ test-suite intmap-strict-properties
main-is: intmap-properties.hs
type: exitcode-stdio-1.0
cpp-options: -DSTRICT
other-modules: IntMapValidity
build-depends: containers-tests
build-depends:
array >=0.4.0.0
, base >=4.6 && <5
, deepseq >=1.2 && <1.5

ghc-options: -O2
ghc-options: -O1
other-extensions:
BangPatterns
CPP
Expand Down
65 changes: 0 additions & 65 deletions containers-tests/tests/IntMapValidity.hs

This file was deleted.

Loading