monoidmap 0.0.1.6 → 0.0.1.7
raw patch · 39 files changed
+456/−44 lines, 39 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +6/−2
- LICENSE +1/−1
- monoidmap.cabal +3/−2
- src/examples/Examples/MultiMap.hs +1/−1
- src/examples/Examples/MultiMap/Class.hs +1/−1
- src/examples/Examples/MultiMap/Instances/MultiMap1.hs +1/−1
- src/examples/Examples/MultiMap/Instances/MultiMap2.hs +1/−1
- src/examples/Examples/MultiMap/Instances/MultiMap3.hs +1/−1
- src/examples/Examples/MultiMap/Instances/MultiMap4.hs +1/−1
- src/examples/Examples/MultiSet.hs +1/−1
- src/examples/Examples/NestedMonoidMap.hs +1/−1
- src/examples/Examples/RecoveredMap.hs +1/−1
- src/internal/Data/MonoidMap/Internal.hs +225/−5
- src/internal/Data/MonoidMap/Unsafe.hs +1/−1
- src/public/Data/MonoidMap.hs +14/−1
- src/test/Data/MonoidMap/AccessSpec.hs +1/−1
- src/test/Data/MonoidMap/ClassSpec.hs +1/−1
- src/test/Data/MonoidMap/ComparisonSpec.hs +1/−1
- src/test/Data/MonoidMap/ConversionSpec.hs +1/−1
- src/test/Data/MonoidMap/DistributivitySpec.hs +1/−1
- src/test/Data/MonoidMap/ExampleSpec.hs +1/−1
- src/test/Data/MonoidMap/FilterSpec.hs +1/−1
- src/test/Data/MonoidMap/FoldSpec.hs +174/−0
- src/test/Data/MonoidMap/IntersectionSpec.hs +1/−1
- src/test/Data/MonoidMap/MapSpec.hs +1/−1
- src/test/Data/MonoidMap/MembershipSpec.hs +1/−1
- src/test/Data/MonoidMap/PartitionSpec.hs +1/−1
- src/test/Data/MonoidMap/PrefixSpec.hs +1/−1
- src/test/Data/MonoidMap/SingletonSpec.hs +1/−1
- src/test/Data/MonoidMap/SliceSpec.hs +1/−1
- src/test/Data/MonoidMap/SuffixSpec.hs +1/−1
- src/test/Data/MonoidMap/UnionSpec.hs +1/−1
- src/test/Data/MonoidMap/ValiditySpec.hs +1/−1
- src/test/Examples/MultiMapSpec.hs +1/−1
- src/test/Examples/RecoveredMapSpec.hs +1/−1
- src/test/Test/Combinators/NonZero.hs +1/−1
- src/test/Test/Common.hs +1/−1
- src/test/Test/Hspec/Unit.hs +1/−1
- src/test/Test/QuickCheck/Classes/Hspec.hs +1/−1
CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.0.1.7++- Added a selection of folding operations for `MonoidMap`.+ # 0.0.1.6 - Updated version bounds for dependencies.@@ -29,8 +33,8 @@ # 0.0.0.1 -Revised `MultiMap` examples and documentation.+- Revised `MultiMap` examples and documentation. # 0.0.0.0 -Initial release.+- Initial release.
LICENSE view
@@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright © 2022–2024 Jonathan Knowles+ Copyright © 2022–2025 Jonathan Knowles Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
monoidmap.cabal view
@@ -1,12 +1,12 @@ cabal-version: 3.0 name: monoidmap-version: 0.0.1.6+version: 0.0.1.7 bug-reports: https://github.com/jonathanknowles/monoidmap/issues license: Apache-2.0 license-file: LICENSE author: Jonathan Knowles maintainer: mail@jonathanknowles.net-copyright: 2022–2024 Jonathan Knowles+copyright: 2022–2025 Jonathan Knowles category: Data Structures synopsis: Monoidal map type description:@@ -163,6 +163,7 @@ Data.MonoidMap.DistributivitySpec Data.MonoidMap.MapSpec Data.MonoidMap.FilterSpec+ Data.MonoidMap.FoldSpec Data.MonoidMap.PartitionSpec Data.MonoidMap.MembershipSpec Data.MonoidMap.SingletonSpec
src/examples/Examples/MultiMap.hs view
@@ -1,6 +1,6 @@ {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- Provides the 'MultiMap' class, which models a total relation from unique
src/examples/Examples/MultiMap/Class.hs view
@@ -1,5 +1,5 @@ -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- Provides the 'MultiMap' class, which models a total relation from unique
src/examples/Examples/MultiMap/Instances/MultiMap1.hs view
@@ -1,5 +1,5 @@ -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- An __unlawful__ implementation of 'MultiMap', implemented in terms of 'Map'
src/examples/Examples/MultiMap/Instances/MultiMap2.hs view
@@ -1,5 +1,5 @@ -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- A __lawful__ implementation of 'MultiMap', implemented in terms of 'Map' and
src/examples/Examples/MultiMap/Instances/MultiMap3.hs view
@@ -1,5 +1,5 @@ -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- A __lawful__ implementation of 'MultiMap', implemented in terms of 'Map' and
src/examples/Examples/MultiMap/Instances/MultiMap4.hs view
@@ -1,5 +1,5 @@ -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- A __lawful__ implementation of 'MultiMap', implemented in terms of
src/examples/Examples/MultiSet.hs view
@@ -1,5 +1,5 @@ -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- A multiset type, implemented in terms of 'MonoidMap'.
src/examples/Examples/NestedMonoidMap.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE TypeSynonymInstances #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- A nested map with compound keys, implemented in terms of 'MonoidMap'.
src/examples/Examples/RecoveredMap.hs view
@@ -2,7 +2,7 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- An ordinary left-biased map similar to 'Map', implemented in terms of
src/internal/Data/MonoidMap/Internal.hs view
@@ -5,7 +5,7 @@ {- HLINT ignore "Redundant bracket" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- Provides /internal/ operations for the 'MonoidMap' type.@@ -65,6 +65,19 @@ , mapKeys , mapKeysWith + -- ** Folding+ , foldl+ , foldr+ , foldlWithKey+ , foldrWithKey+ , foldMapWithKey++ -- *** Strict folding+ , foldl'+ , foldr'+ , foldlWithKey'+ , foldrWithKey'+ -- * Monoidal operations -- ** Association@@ -118,7 +131,18 @@ where import Prelude hiding- ( drop, filter, lookup, map, null, splitAt, subtract, take )+ ( drop+ , filter+ , foldl+ , foldl'+ , foldr+ , lookup+ , map+ , null+ , splitAt+ , subtract+ , take+ ) import Control.DeepSeq ( NFData )@@ -362,7 +386,7 @@ -- Satisfies the following property for all possible keys __@k@__: -- -- @--- 'get' k 'empty' == 'mempty'+-- 'get' k 'empty' '==' 'mempty' -- @ -- -- Provides the definition of 'mempty' for the 'MonoidMap' instance of@@ -432,7 +456,7 @@ -- Satisfies the following property for all possible keys __@k@__: -- -- @--- 'get' k ('fromMap' m) '==' 'Map.findWithDefault' 'mempty' 'k' m+-- 'get' k ('fromMap' m) '==' 'Map'.'Map.findWithDefault' 'mempty' 'k' m -- @ -- -- This function performs canonicalisation of 'C.null' values, and has a time@@ -489,7 +513,7 @@ -- Satisfies the following round-trip property: -- -- @--- 'fromMap' ('toMap' m) == m+-- 'fromMap' ('toMap' m) '==' m -- @ -- toMap :: forall k v. MonoidMap k v -> Map k v@@ -945,6 +969,202 @@ -> MonoidMap k1 v -> MonoidMap k2 v mapKeysWith combine fk = fromListWith combine . fmap (B.first fk) . toList++--------------------------------------------------------------------------------+-- Lazy folding+--------------------------------------------------------------------------------++-- | \(O(n)\). Folds over the values in the map using the given+-- left-associative binary operator.+--+-- Satisfies the following property:+--+-- @+-- 'foldl' f r m '==' 'Map'.'Map.foldl' f r ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldl :: (r -> v -> r) -> r -> MonoidMap k v -> r+foldl =+ (coerce+ :: ((r -> v -> r) -> r -> Map k v -> r)+ -> ((r -> v -> r) -> r -> MonoidMap k v -> r)+ )+ Map.foldl+{-# INLINE foldl #-}++-- | \(O(n)\). Folds over the values in the map using the given+-- right-associative binary operator.+--+-- Satisfies the following property:+--+-- @+-- 'foldr' f r m '==' 'Map'.'Map.foldr' f r ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldr :: (v -> r -> r) -> r -> MonoidMap k v -> r+foldr =+ (coerce+ :: ((v -> r -> r) -> r -> Map k v -> r)+ -> ((v -> r -> r) -> r -> MonoidMap k v -> r)+ )+ Map.foldr+{-# INLINE foldr #-}++-- | \(O(n)\). Folds over the keys and values in the map using the given+-- left-associative binary operator.+--+-- Satisfies the following property:+--+-- @+-- 'foldlWithKey' f r m '==' 'Map'.'Map.foldlWithKey' f r ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldlWithKey :: (r -> k -> v -> r) -> r -> MonoidMap k v -> r+foldlWithKey =+ (coerce+ :: ((r -> k -> v -> r) -> r -> Map k v -> r)+ -> ((r -> k -> v -> r) -> r -> MonoidMap k v -> r)+ )+ Map.foldlWithKey+{-# INLINE foldlWithKey #-}++-- | \(O(n)\). Folds over the keys and values in the map using the given+-- right-associative binary operator.+--+-- Satisfies the following property:+--+-- @+-- 'foldrWithKey' f r m '==' 'Map'.'Map.foldrWithKey' f r ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldrWithKey :: (k -> v -> r -> r) -> r -> MonoidMap k v -> r+foldrWithKey =+ (coerce+ :: ((k -> v -> r -> r) -> r -> Map k v -> r)+ -> ((k -> v -> r -> r) -> r -> MonoidMap k v -> r)+ )+ Map.foldrWithKey+{-# INLINE foldrWithKey #-}++-- | \(O(n)\). Folds over the keys and values in the map using the given+-- monoid.+--+-- Satisfies the following property:+--+-- @+-- 'foldMapWithKey' f m '==' 'Map'.'Map.foldMapWithKey' f ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldMapWithKey :: Monoid r => (k -> v -> r) -> MonoidMap k v -> r+foldMapWithKey =+ (coerce+ :: ((k -> v -> r) -> Map k v -> r)+ -> ((k -> v -> r) -> MonoidMap k v -> r)+ )+ Map.foldMapWithKey+{-# INLINE foldMapWithKey #-}++--------------------------------------------------------------------------------+-- Strict folding+--------------------------------------------------------------------------------++-- | \(O(n)\). A strict version of 'foldl'.+--+-- Each application of the operator is evaluated before using the result in the+-- next application. This function is strict in the starting value.+--+-- Satisfies the following property:+--+-- @+-- 'foldl'' f r m '==' 'Map'.'Map.foldl'' f r ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldl' :: (r -> v -> r) -> r -> MonoidMap k v -> r+foldl' =+ (coerce+ :: ((r -> v -> r) -> r -> Map k v -> r)+ -> ((r -> v -> r) -> r -> MonoidMap k v -> r)+ )+ Map.foldl'+{-# INLINE foldl' #-}++-- | \(O(n)\). A strict version of 'foldr'.+--+-- Each application of the operator is evaluated before using the result in the+-- next application. This function is strict in the starting value.+--+-- Satisfies the following property:+--+-- @+-- 'foldr'' f r m '==' 'Map'.'Map.foldr'' f r ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldr' :: (v -> r -> r) -> r -> MonoidMap k v -> r+foldr' =+ (coerce+ :: ((v -> r -> r) -> r -> Map k v -> r)+ -> ((v -> r -> r) -> r -> MonoidMap k v -> r)+ )+ Map.foldr'+{-# INLINE foldr' #-}++-- | \(O(n)\). A strict version of 'foldlWithKey'.+--+-- Each application of the operator is evaluated before using the result in the+-- next application. This function is strict in the starting value.+--+-- Satisfies the following property:+--+-- @+-- 'foldlWithKey'' f r m '==' 'Map'.'Map.foldlWithKey'' f r ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldlWithKey' :: (r -> k -> v -> r) -> r -> MonoidMap k v -> r+foldlWithKey' =+ (coerce+ :: ((r -> k -> v -> r) -> r -> Map k v -> r)+ -> ((r -> k -> v -> r) -> r -> MonoidMap k v -> r)+ )+ Map.foldlWithKey'+{-# INLINE foldlWithKey' #-}++-- | \(O(n)\). A strict version of 'foldrWithKey'.+--+-- Each application of the operator is evaluated before using the result in the+-- next application. This function is strict in the starting value.+--+-- Satisfies the following property:+--+-- @+-- 'foldrWithKey'' f r m '==' 'Map'.'Map.foldrWithKey'' f r ('toMap' m)+-- @+--+-- @since 0.0.1.7+--+foldrWithKey' :: (k -> v -> r -> r) -> r -> MonoidMap k v -> r+foldrWithKey' =+ (coerce+ :: ((k -> v -> r -> r) -> r -> Map k v -> r)+ -> ((k -> v -> r -> r) -> r -> MonoidMap k v -> r)+ )+ Map.foldrWithKey'+{-# INLINE foldrWithKey' #-} -------------------------------------------------------------------------------- -- Comparison
src/internal/Data/MonoidMap/Unsafe.hs view
@@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- Provides /unsafe/ operations for the 'MonoidMap' type.
src/public/Data/MonoidMap.hs view
@@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap@@ -63,6 +63,19 @@ , map , mapKeys , mapKeysWith++ -- ** Folding+ , foldl+ , foldr+ , foldlWithKey+ , foldrWithKey+ , foldMapWithKey++ -- *** Strict folding+ , foldl'+ , foldr'+ , foldlWithKey'+ , foldrWithKey' -- * Monoidal operations
src/test/Data/MonoidMap/AccessSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.AccessSpec
src/test/Data/MonoidMap/ClassSpec.hs view
@@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.ClassSpec
src/test/Data/MonoidMap/ComparisonSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.ComparisonSpec
src/test/Data/MonoidMap/ConversionSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.ConversionSpec
src/test/Data/MonoidMap/DistributivitySpec.hs view
@@ -4,7 +4,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.DistributivitySpec
src/test/Data/MonoidMap/ExampleSpec.hs view
@@ -5,7 +5,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.ExampleSpec
src/test/Data/MonoidMap/FilterSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.FilterSpec
+ src/test/Data/MonoidMap/FoldSpec.hs view
@@ -0,0 +1,174 @@+-- |+-- Copyright: © 2022–2025 Jonathan Knowles+-- License: Apache-2.0+--+module Data.MonoidMap.FoldSpec+ ( spec+ ) where++import Prelude++import Control.Monad+ ( forM_ )+import Data.Function+ ( (&) )+import Data.MonoidMap+ ( MonoidMap )+import Data.Proxy+ ( Proxy (..) )+import Test.Common+ ( Key, Test, TestType (TestType), makeSpec, property, testTypesMonoidNull )+import Test.Hspec+ ( Spec, describe, it )+import Test.QuickCheck+ ( Fun (..), Property, applyFun2, applyFun3, (===) )++import qualified Data.Map.Strict as Map+import qualified Data.MonoidMap as MonoidMap++spec :: Spec+spec = describe "Folding" $ do++ forM_ testTypesMonoidNull $ \(TestType p) -> specFor (Proxy @Key) p++specFor :: forall k v. Test k v => Proxy k -> Proxy v -> Spec+specFor = makeSpec $ do++ describe "Lazy" $ do++ it "prop_toMap_foldl" $+ prop_toMap_foldl+ @k @v & property+ it "prop_toMap_foldr" $+ prop_toMap_foldr+ @k @v & property+ it "prop_toMap_foldlWithKey" $+ prop_toMap_foldlWithKey+ @k @v & property+ it "prop_toMap_foldrWithKey" $+ prop_toMap_foldrWithKey+ @k @v & property+ it "prop_toMap_foldMapWithKey" $+ prop_toMap_foldMapWithKey+ @k @v & property++ describe "Strict" $ do++ it "prop_toMap_foldl'" $+ prop_toMap_foldl'+ @k @v & property+ it "prop_toMap_foldr'" $+ prop_toMap_foldr'+ @k @v & property+ it "prop_toMap_foldlWithKey'" $+ prop_toMap_foldlWithKey'+ @k @v & property+ it "prop_toMap_foldrWithKey'" $+ prop_toMap_foldrWithKey'+ @k @v & property++--------------------------------------------------------------------------------+-- Lazy folding+--------------------------------------------------------------------------------++prop_toMap_foldl+ :: Test k v+ => r ~ v+ => Fun (r, v) r+ -> r+ -> MonoidMap k v+ -> Property+prop_toMap_foldl (applyFun2 -> f) r m =+ MonoidMap.foldl f r m+ === Map.foldl f r (MonoidMap.toMap m)++prop_toMap_foldr+ :: Test k v+ => r ~ v+ => Fun (v, r) r+ -> r+ -> MonoidMap k v+ -> Property+prop_toMap_foldr (applyFun2 -> f) r m =+ MonoidMap.foldr f r m+ === Map.foldr f r (MonoidMap.toMap m)++prop_toMap_foldlWithKey+ :: Test k v+ => r ~ v+ => Fun (r, k, v) r+ -> r+ -> MonoidMap k v+ -> Property+prop_toMap_foldlWithKey (applyFun3 -> f) r m =+ MonoidMap.foldlWithKey f r m+ === Map.foldlWithKey f r (MonoidMap.toMap m)++prop_toMap_foldrWithKey+ :: Test k v+ => r ~ v+ => Fun (k, v, r) r+ -> r+ -> MonoidMap k v+ -> Property+prop_toMap_foldrWithKey (applyFun3 -> f) r m =+ MonoidMap.foldrWithKey f r m+ === Map.foldrWithKey f r (MonoidMap.toMap m)++prop_toMap_foldMapWithKey+ :: Test k v+ => r ~ v+ => Fun (k, v) r+ -> MonoidMap k v+ -> Property+prop_toMap_foldMapWithKey (applyFun2 -> f) m =+ MonoidMap.foldMapWithKey f m+ === Map.foldMapWithKey f (MonoidMap.toMap m)++--------------------------------------------------------------------------------+-- Strict folding+--------------------------------------------------------------------------------++prop_toMap_foldl'+ :: Test k v+ => r ~ v+ => Fun (r, v) r+ -> r+ -> MonoidMap k v+ -> Property+prop_toMap_foldl' (applyFun2 -> f) r m =+ MonoidMap.foldl' f r m+ === Map.foldl' f r (MonoidMap.toMap m)++prop_toMap_foldr'+ :: Test k v+ => r ~ v+ => Fun (v, r) r+ -> r+ -> MonoidMap k v+ -> Property+prop_toMap_foldr' (applyFun2 -> f) r m =+ MonoidMap.foldr' f r m+ === Map.foldr' f r (MonoidMap.toMap m)++prop_toMap_foldlWithKey'+ :: Test k v+ => r ~ v+ => Fun (r, k, v) r+ -> r+ -> MonoidMap k v+ -> Property+prop_toMap_foldlWithKey' (applyFun3 -> f) r m =+ MonoidMap.foldlWithKey' f r m+ === Map.foldlWithKey' f r (MonoidMap.toMap m)++prop_toMap_foldrWithKey'+ :: Test k v+ => r ~ v+ => Fun (k, v, r) r+ -> r+ -> MonoidMap k v+ -> Property+prop_toMap_foldrWithKey' (applyFun3 -> f) r m =+ MonoidMap.foldrWithKey' f r m+ === Map.foldrWithKey' f r (MonoidMap.toMap m)
src/test/Data/MonoidMap/IntersectionSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.IntersectionSpec
src/test/Data/MonoidMap/MapSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.MapSpec
src/test/Data/MonoidMap/MembershipSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.MembershipSpec
src/test/Data/MonoidMap/PartitionSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.PartitionSpec
src/test/Data/MonoidMap/PrefixSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.PrefixSpec
src/test/Data/MonoidMap/SingletonSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.SingletonSpec
src/test/Data/MonoidMap/SliceSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.SliceSpec
src/test/Data/MonoidMap/SuffixSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.SuffixSpec
src/test/Data/MonoidMap/UnionSpec.hs view
@@ -3,7 +3,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.UnionSpec
src/test/Data/MonoidMap/ValiditySpec.hs view
@@ -2,7 +2,7 @@ {-# LANGUAGE RankNTypes #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Data.MonoidMap.ValiditySpec
src/test/Examples/MultiMapSpec.hs view
@@ -5,7 +5,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Examples.MultiMapSpec
src/test/Examples/RecoveredMapSpec.hs view
@@ -5,7 +5,7 @@ {-# HLINT ignore "Use null" #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Examples.RecoveredMapSpec
src/test/Test/Combinators/NonZero.hs view
@@ -1,5 +1,5 @@ -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Test.Combinators.NonZero
src/test/Test/Common.hs view
@@ -5,7 +5,7 @@ {- HLINT ignore "Use null" -} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Test.Common
src/test/Test/Hspec/Unit.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE FunctionalDependencies #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- module Test.Hspec.Unit where
src/test/Test/QuickCheck/Classes/Hspec.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE PolyKinds #-} -- |--- Copyright: © 2022–2024 Jonathan Knowles+-- Copyright: © 2022–2025 Jonathan Knowles -- License: Apache-2.0 -- -- Provides testing functions to check that type class instances obey laws.