packages feed

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 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.