monoids 0.1.9 → 0.1.10
raw patch · 2 files changed
+126/−6 lines, 2 files
Files
- Data/Monoid/Instances.hs +118/−0
- monoids.cabal +8/−6
+ Data/Monoid/Instances.hs view
@@ -0,0 +1,118 @@+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, UndecidableInstances, OverloadedStrings #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++-----------------------------------------------------------------------------+-- |+-- Module : Data.Monoid.Instances+-- Copyright : (c) Edward Kmett 2009+-- License : BSD-style+-- Maintainer : libraries@haskell.org+-- Stability : experimental+-- Portability : portable+--+-- A collection of orphan instance declarations for Monoids that should+-- eventually be pushed back down to the source packages.+--+-- Every package that uses these instances includes this package internally.+--+-- Includes:+--+-- * 'Monoid' instances for the 'Monad' transformers from the mtl package+--+-- * A 'Monoid' instance for the 'ParsecT' 'Monad' from parsec-3.+--+-- * 'IsString' instances for tuples of 'IsString' for overloaded string support.+--+-- * A 'Monoid' instance for the 'FingerTree' in the fingertree package +--+-- * 'Monoid' instances for 'Int', 'Integer', and 'Ratio' using @(+,0)@+--+-- This module is automatically included everywhere this functionality is required+-- within this package. You should only have to import this module yourself if you +-- want these instances for your own purposes.+-----------------------------------------------------------------------------++module Data.Monoid.Instances where++import Control.Monad.Reader++import qualified Control.Monad.RWS.Lazy as LRWS+import qualified Control.Monad.RWS.Strict as SRWS++import qualified Control.Monad.State.Lazy as LState+import qualified Control.Monad.State.Strict as SState++import Control.Monad.Writer+import qualified Control.Monad.Writer.Strict as SWriter++import Data.String++import Data.Ratio++import Data.FingerTree++import Text.Parsec.Prim++-- orphan Monoid instances for Monad Transformers+instance (MonadPlus m, Monoid w) => Monoid (SWriter.WriterT w m n) where+ mempty = mzero+ mappend = mplus++instance (MonadPlus m, Monoid w) => Monoid (WriterT w m n) where+ mempty = mzero+ mappend = mplus++instance (MonadPlus m, Monoid w) => Monoid (SRWS.RWST r w s m n) where + mempty = mzero+ mappend = mplus++instance (MonadPlus m, Monoid w) => Monoid (LRWS.RWST r w s m n) where + mempty = mzero+ mappend = mplus++instance MonadPlus m => Monoid (ReaderT e m n) where+ mempty = mzero+ mappend = mplus++instance MonadPlus m => Monoid (SState.StateT s m n) where+ mempty = mzero+ mappend = mplus++instance MonadPlus m => Monoid (LState.StateT s m n) where+ mempty = mzero+ mappend = mplus++-- orphan, which should be in Data.FingerTree+instance Measured v a => Monoid (FingerTree v a) where+ mempty = empty+ mappend = (><)++-- orphan, which should be in Parsec+instance Stream s m t => Monoid (ParsecT s u m a) where+ mempty = mzero+ a `mappend` b = try a <|> b++-- orphan, perhaps should be in Data.String+instance (IsString a, IsString b) => IsString (a,b) where+ fromString a = (fromString a, fromString a)++instance (IsString a, IsString b, IsString c) => IsString (a,b,c) where+ fromString a = (fromString a, fromString a, fromString a)++instance (IsString a, IsString b, IsString c, IsString d) => IsString (a,b,c,d) where+ fromString a = (fromString a, fromString a, fromString a, fromString a)++instance (IsString a, IsString b, IsString c, IsString d, IsString e) => IsString (a,b,c,d,e) where+ fromString a = (fromString a, fromString a, fromString a, fromString a, fromString a)++instance Monoid Int where+ mempty = 0+ mappend = (+)++instance Monoid Integer where+ mempty = 0+ mappend = (+)++instance Integral m => Monoid (Ratio m) where+ mempty = 0+ mappend = (+)
monoids.cabal view
@@ -1,5 +1,5 @@ name: monoids-version: 0.1.9+version: 0.1.10 license: BSD3 license-file: LICENSE author: Edward A. Kmett@@ -41,6 +41,7 @@ Data.Monoid.Generator Data.Monoid.Generator.LZ78 Data.Monoid.Generator.RLE+ Data.Monoid.Instances Data.Monoid.Lexical.SourcePosition Data.Monoid.Lexical.UTF8.Decoder Data.Monoid.Lexical.Words@@ -48,19 +49,20 @@ Data.Monoid.Multiplicative Data.Monoid.Multiplicative.Sugar Data.Monoid.Ord- Data.Monoid.Self Data.Monoid.Reducer Data.Monoid.Reducer.Char Data.Monoid.Reducer.With+ Data.Monoid.Self Data.Monoid.Union Data.Ring Data.Ring.Boolean- Data.Ring.Semi- Data.Ring.Semi.Tropical- Data.Ring.Semi.Near- Data.Ring.Semi.Ord Data.Ring.FromNum Data.Ring.Module Data.Ring.Module.AutomaticDifferentiation+ Data.Ring.Semi+ Data.Ring.Semi.Near+ Data.Ring.Semi.Ord+ Data.Ring.Semi.Tropical Data.Ring.Sugar+ ghc-options: -Wall -fno-warn-duplicate-exports