monoid-extras 0.3.0.0 → 0.3.1.0
raw patch · 4 files changed
+52/−5 lines, 4 filesdep +semigroupoidsPVP ok
version bump matches the API change (PVP)
Dependencies added: semigroupoids
API changes (from Hackage documentation)
+ Data.Monoid.Endomorphism: Endomorphism :: k a a -> Endomorphism k a
+ Data.Monoid.Endomorphism: getEndomorphism :: Endomorphism k a -> k a a
+ Data.Monoid.Endomorphism: instance Category k => Monoid (Endomorphism k a)
+ Data.Monoid.Endomorphism: instance Semigroupoid k => Semigroup (Endomorphism k a)
+ Data.Monoid.Endomorphism: newtype Endomorphism k a
+ Data.Monoid.Inf: instance Foldable (Inf p)
+ Data.Monoid.Inf: instance Functor (Inf p)
+ Data.Monoid.Inf: instance Traversable (Inf p)
Files
- CHANGES +5/−0
- monoid-extras.cabal +4/−2
- src/Data/Monoid/Endomorphism.hs +33/−0
- src/Data/Monoid/Inf.hs +10/−3
CHANGES view
@@ -1,3 +1,8 @@+* 0.3.1: 20 August 2013++ - new module Data.Monoid.Endomorphism+ - add derived Functor, Foldable, and Traversable instances for Data.Monoid.Inf.Inf+ * 0.3: 2 May 2013 - generalize PosInf to Inf, which supports making monoids out of
monoid-extras.cabal view
@@ -1,5 +1,5 @@ name: monoid-extras-version: 0.3.0.0+version: 0.3.1.0 synopsis: Various extra monoid-related definitions and utilities description: Various extra monoid-related definitions and utilities, such as monoid actions, monoid coproducts, \"deletable\"@@ -24,6 +24,7 @@ Data.Monoid.Coproduct, Data.Monoid.Cut, Data.Monoid.Deletable,+ Data.Monoid.Endomorphism, Data.Monoid.Inf, Data.Monoid.MList, Data.Monoid.Recommend,@@ -31,7 +32,8 @@ Data.Monoid.WithSemigroup build-depends: base >= 4.3 && < 4.8,- semigroups >= 0.8 && < 0.10+ semigroups >= 0.8 && < 0.10,+ semigroupoids < 4 hs-source-dirs: src
+ src/Data/Monoid/Endomorphism.hs view
@@ -0,0 +1,33 @@+-----------------------------------------------------------------------------+-- |+-- Module : Data.Monoid.Endomorphism+-- Copyright : (c) 2013 diagrams-core team (see LICENSE)+-- License : BSD-style (see LICENSE)+-- Maintainer : diagrams-discuss@googlegroups.com+--+-- The monoid of endomorphisms over any 'Category'.+--+-----------------------------------------------------------------------------++module Data.Monoid.Endomorphism+ ( Endomorphism(..)+ )+ where++import Control.Category+import Data.Semigroup+import Data.Semigroupoid+import Prelude hiding (id, (.))++-- | An 'Endomorphism' in a given 'Category' is a morphism from some+-- object to itself. The set of endomorphisms for a particular+-- object form a monoid, with composition as the combining operation+-- and the identity morphism as the identity element.+newtype Endomorphism k a = Endomorphism {getEndomorphism :: k a a}++instance Semigroupoid k => Semigroup (Endomorphism k a) where+ Endomorphism a <> Endomorphism b = Endomorphism (a `o` b)++instance Category k => Monoid (Endomorphism k a) where+ mempty = Endomorphism id+ Endomorphism a `mappend` Endomorphism b = Endomorphism (a . b)
src/Data/Monoid/Inf.hs view
@@ -1,3 +1,7 @@+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE EmptyDataDecls #-} {-# LANGUAGE FlexibleInstances #-} ----------------------------------------------------------------------------- -- |@@ -24,14 +28,17 @@ ) where import Data.Semigroup-import qualified Prelude as P-import Prelude hiding (minimum, maximum)+import Prelude hiding (maximum, minimum)+import qualified Prelude as P +import Data.Foldable (Foldable)+import Data.Traversable (Traversable)+ data Pos data Neg data Inf p a = Infinity | Finite a- deriving (Eq, Show, Read)+ deriving (Eq, Show, Read, Functor, Foldable, Traversable) type PosInf a = Inf Pos a type NegInf a = Inf Neg a