monoid-extras 0.3.3.5 → 0.4.0.0
raw patch · 12 files changed
+98/−45 lines, 12 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Data.Monoid.Coproduct: instance Typeable (:+:)
+ Data.Monoid.Cut: instance Data m => Data (Cut m)
+ Data.Monoid.Cut: instance Foldable Cut
+ Data.Monoid.Cut: instance Functor Cut
+ Data.Monoid.Cut: instance Read m => Read (Cut m)
+ Data.Monoid.Cut: instance Traversable Cut
+ Data.Monoid.Cut: instance Typeable Cut
+ Data.Monoid.Deletable: instance Data m => Data (Deletable m)
+ Data.Monoid.Deletable: instance Foldable Deletable
+ Data.Monoid.Deletable: instance Read m => Read (Deletable m)
+ Data.Monoid.Deletable: instance Traversable Deletable
+ Data.Monoid.Deletable: instance Typeable Deletable
+ Data.Monoid.Inf: instance (Data p, Data a) => Data (Inf p a)
+ Data.Monoid.Inf: instance Typeable Inf
+ Data.Monoid.Recommend: instance Data a => Data (Recommend a)
+ Data.Monoid.Recommend: instance Eq a => Eq (Recommend a)
+ Data.Monoid.Recommend: instance Foldable Recommend
+ Data.Monoid.Recommend: instance Functor Recommend
+ Data.Monoid.Recommend: instance Ord a => Ord (Recommend a)
+ Data.Monoid.Recommend: instance Read a => Read (Recommend a)
+ Data.Monoid.Recommend: instance Traversable Recommend
+ Data.Monoid.Recommend: instance Typeable Recommend
+ Data.Monoid.Split: instance Data m => Data (Split m)
+ Data.Monoid.Split: instance Eq m => Eq (Split m)
+ Data.Monoid.Split: instance Foldable Split
+ Data.Monoid.Split: instance Functor Split
+ Data.Monoid.Split: instance Read m => Read (Split m)
+ Data.Monoid.Split: instance Traversable Split
+ Data.Monoid.Split: instance Typeable Split
Files
- CHANGES +7/−1
- LICENSE +2/−1
- monoid-extras.cabal +3/−2
- src/Data/Monoid/Action.hs +2/−2
- src/Data/Monoid/Coproduct.hs +8/−7
- src/Data/Monoid/Cut.hs +10/−3
- src/Data/Monoid/Deletable.hs +10/−5
- src/Data/Monoid/Endomorphism.hs +4/−4
- src/Data/Monoid/Inf.hs +13/−8
- src/Data/Monoid/MList.hs +8/−1
- src/Data/Monoid/Recommend.hs +16/−4
- src/Data/Monoid/Split.hs +15/−7
CHANGES view
@@ -1,4 +1,10 @@-* 0.3.3.5 03 Dec 2014+* 0.4: 19 April 2015++ - add derived instances where possible:+ Typeable, Data, Read, Eq, Ord, Functor, Foldable, Traversable+ - allow base-4.8++* 0.3.3.5: 03 Dec 2014 - allow semigroups-0.15
LICENSE view
@@ -1,6 +1,7 @@-Copyright (c) 2012-2013, monoid-extras team:+Copyright (c) 2012-2015, monoid-extras team: Daniel Bergey <bergey@alum.mit.edu>+ Christopher Chalmers <c.chalmers@me.com> Nathan van Doorn <nvd1234@gmail.com> Daniil Frumin <difrumin@gmail.com> Hans Höglund <hans@hanshoglund.se>
monoid-extras.cabal view
@@ -1,5 +1,5 @@ name: monoid-extras-version: 0.3.3.5+version: 0.4.0.0 synopsis: Various extra monoid-related definitions and utilities description: Various extra monoid-related definitions and utilities, such as monoid actions, monoid coproducts, \"deletable\"@@ -13,6 +13,7 @@ category: Data build-type: Simple cabal-version: >=1.10+tested-with: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.1 source-repository head type: git@@ -31,7 +32,7 @@ Data.Monoid.Split, Data.Monoid.WithSemigroup - build-depends: base >= 4.3 && < 4.8,+ build-depends: base >= 4.3 && < 4.9, groups < 0.5, semigroups >= 0.8 && < 0.17, semigroupoids >= 4.0 && < 5
src/Data/Monoid/Action.hs view
@@ -28,13 +28,13 @@ -- -- * @act mempty = id@ ----- * @act (m1 ``mappend`` m2) = act m1 . act m2@+-- * @act (m1 \`mappend\` m2) = act m1 . act m2@ -- -- Semigroup instances are required to satisfy the second law but with -- ('<>') instead of 'mappend'. Additionally, if the type @s@ has -- any algebraic structure, @act m@ should be a homomorphism. For -- example, if @s@ is also a monoid we should have @act m mempty =--- mempty@ and @act m (s1 ``mappend`` s2) = (act m s1) ``mappend``+-- mempty@ and @act m (s1 \`mappend\` s2) = (act m s1) \`mappend\` -- (act m s2)@. -- -- By default, @act = const id@, so for a type @M@ which should have
src/Data/Monoid/Coproduct.hs view
@@ -1,12 +1,12 @@-{-# LANGUAGE TypeOperators- , FlexibleInstances- , MultiParamTypeClasses- #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeOperators #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Monoid.Coproduct--- Copyright : (c) 2011 diagrams-core team (see LICENSE)+-- Copyright : (c) 2011-2015 diagrams-core team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com --@@ -23,8 +23,9 @@ ) where -import Data.Either (lefts, rights)+import Data.Either (lefts, rights) import Data.Semigroup+import Data.Typeable import Data.Monoid.Action @@ -34,7 +35,7 @@ -- concatenation, with appropriate combining of adjacent elements -- when possible. newtype m :+: n = MCo { unMCo :: [Either m n] }- deriving Show+ deriving (Typeable, Show) -- For efficiency and simplicity, we implement it just as [Either m -- n]: of course, this does not preserve the invariant of strictly
src/Data/Monoid/Cut.hs view
@@ -1,8 +1,12 @@-+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveTraversable #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Monoid.Cut--- Copyright : (c) 2012 diagrams-core team (see LICENSE)+-- Copyright : (c) 2012-2015 diagrams-core team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com --@@ -18,7 +22,10 @@ ) where +import Data.Data import Data.Semigroup+import Data.Foldable+import Data.Traversable infix 5 :||: @@ -38,7 +45,7 @@ -- the outermost splits and throws away everything in between. data Cut m = Uncut m | m :||: m- deriving (Show)+ deriving (Data, Typeable, Show, Read, Functor, Foldable, Traversable) -- | If @m@ is a @Semigroup@, then @Cut m@ is a semigroup which -- contains @m@ as a sub-semigroup, but also contains elements of
src/Data/Monoid/Deletable.hs view
@@ -1,10 +1,12 @@-{-# LANGUAGE DeriveFunctor- #-}-+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveTraversable #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Monoid.Deletable--- Copyright : (c) 2011 diagrams-core team (see LICENSE)+-- Copyright : (c) 2011-2015 diagrams-core team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com --@@ -22,6 +24,9 @@ ) where +import Data.Data+import Data.Foldable+import Data.Traversable import Data.Semigroup -- | If @m@ is a 'Monoid', then @Deletable m@ (intuitively speaking)@@ -52,7 +57,7 @@ -- * The remaining case is symmetric with the second. data Deletable m = Deletable Int m Int- deriving (Functor, Show)+ deriving (Data, Typeable, Show, Read, Functor, Foldable, Traversable) -- | Project the wrapped value out of a `Deletable` value. unDelete :: Deletable m -> m
src/Data/Monoid/Endomorphism.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE StandaloneDeriving #-}-{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE UndecidableInstances #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Monoid.Endomorphism--- Copyright : (c) 2013 diagrams-core team (see LICENSE)+-- Copyright : (c) 2013-2015 diagrams-core team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com --@@ -30,7 +30,7 @@ -- and the identity morphism as the identity element. newtype Endomorphism k a = Endomorphism {getEndomorphism :: k a a} -deriving instance Show (k a a) => Show (Endomorphism k a)+deriving instance Show (k a a) => Show (Endomorphism k a) instance Semigroupoid k => Semigroup (Endomorphism k a) where Endomorphism a <> Endomorphism b = Endomorphism (a `o` b)
src/Data/Monoid/Inf.hs view
@@ -1,16 +1,19 @@-{-# LANGUAGE DeriveFoldable #-}-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE DeriveTraversable #-}-{-# LANGUAGE EmptyDataDecls #-}-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE FlexibleInstances #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+ ----------------------------------------------------------------------------- -- | -- Module : Data.Monoid.Inf--- Copyright : (c) 2012 diagrams-core team (see LICENSE)+-- Copyright : (c) 2012-2015 diagrams-core team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com ----- Make semigroup under 'min' or 'max' into monoids by adjoining an+-- Make semigroups under 'min' or 'max' into monoids by adjoining an -- element corresponding to infinity (positive or negative, -- respectively). These types are similar to @Option (Min a)@ and -- @Option (Max a)@ respectively, except that the 'Ord' instance@@ -28,6 +31,7 @@ , posFinite, negFinite ) where +import Data.Data import Data.Semigroup import Prelude hiding (maximum, minimum) import qualified Prelude as P@@ -39,7 +43,8 @@ data Neg data Inf p a = Infinity | Finite a- deriving (Eq, Show, Read, Functor, Foldable, Traversable)+ deriving (Data, Typeable, Show, Read, Eq, Functor, Foldable,+ Traversable) type PosInf a = Inf Pos a type NegInf a = Inf Neg a
src/Data/Monoid/MList.hs view
@@ -1,12 +1,15 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverlappingInstances #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE UndecidableInstances #-}+#if __GLASGOW_HASKELL__ < 710+{-# LANGUAGE OverlappingInstances #-}+#endif {-# OPTIONS_GHC -fno-warn-orphans #-} @@ -91,7 +94,11 @@ -- | Alter the value of type @a@ by applying the given function to it. alt :: (Option a -> Option a) -> l -> l +#if __GLASGOW_HASKELL__ >= 710+instance {-# OVERLAPPING #-} MList t => (:>:) (a ::: t) a where+#else instance MList t => (:>:) (a ::: t) a where+#endif inj a = (Option (Just a), empty) get = fst alt = first
src/Data/Monoid/Recommend.hs view
@@ -1,7 +1,12 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveTraversable #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Monoid.Recommend--- Copyright : (c) 2012 diagrams-core team (see LICENSE)+-- Copyright : (c) 2012-2015 diagrams-core team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com --@@ -14,11 +19,18 @@ ----------------------------------------------------------------------------- module Data.Monoid.Recommend- ( Recommend(..), getRecommend+ ( Recommend(..)+ , getRecommend ) where -import Data.Semigroup+#if __GLASGOW_HASKELL__ < 710+import Data.Foldable+import Data.Traversable+#endif +import Data.Data+import Data.Semigroup+ -- | A value of type @Recommend a@ consists of a value of type @a@ -- wrapped up in one of two constructors. The @Recommend@ -- constructor indicates a \"non-committal recommendation\"---that@@ -28,7 +40,7 @@ -- overriding any @Recommend@ed values. data Recommend a = Recommend a | Commit a- deriving Show+ deriving (Show, Read, Functor, Eq, Ord, Typeable, Data, Foldable, Traversable) -- | Extract the value of type @a@ wrapped in @Recommend a@. getRecommend :: Recommend a -> a
src/Data/Monoid/Split.hs view
@@ -1,11 +1,14 @@-{-# LANGUAGE FlexibleInstances- , MultiParamTypeClasses- #-}-+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Monoid.Split--- Copyright : (c) 2011 diagrams-core team (see LICENSE)+-- Copyright : (c) 2011-2015 diagrams-core team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com --@@ -23,11 +26,16 @@ ----------------------------------------------------------------------------- module Data.Monoid.Split- ( Split(..), split, unsplit+ ( Split(..)+ , split+ , unsplit ) where +import Data.Data+import Data.Foldable import Data.Semigroup+import Data.Traversable import Data.Monoid.Action @@ -48,7 +56,7 @@ -- keeps the outermost splits and throws away everything in between. data Split m = M m | m :| m- deriving (Show)+ deriving (Data, Typeable, Show, Read, Eq, Functor, Foldable, Traversable) -- | If @m@ is a @Semigroup@, then @Split m@ is a semigroup which -- combines values on either side of a split, keeping only the