[doc fixup ekmett@gmail.com**20090325082330] { addfile ./dist/doc/html/monoids/Data-Monoid-Generator-Methods.html hunk ./dist/doc/html/monoids/Data-Monoid-Generator-Methods.html 1 + + +Data.Monoid.Generator.Methods
 monoids-0.1.1: Lots of MonoidsSource codeContentsIndex
Data.Monoid.Generator.Methods
Documentation
module Data.Monoid.Generator
traverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()Source
for_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()Source
mapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()Source
forM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()Source
concatMap :: Generator c => (Elem c -> [b]) -> c -> [b]Source
and :: (Generator c, Elem c ~ Bool) => c -> BoolSource
or :: (Generator c, Elem c ~ Bool) => c -> BoolSource
any :: Generator c => (Elem c -> Bool) -> c -> BoolSource
all :: Generator c => (Elem c -> Bool) -> c -> BoolSource
sum :: (Generator c, Num (Elem c)) => c -> Elem cSource
product :: (Generator c, Num (Elem c)) => c -> Elem cSource
elem :: (Generator c, Eq (Elem c)) => Elem c -> c -> BoolSource
notElem :: (Generator c, Eq (Elem c)) => Elem c -> c -> BoolSource
Produced by Haddock version 2.3.0
addfile ./dist/doc/html/monoids/src/Data-Monoid-Generator-Methods.html hunk ./dist/doc/html/monoids/src/Data-Monoid-Generator-Methods.html 1 + + + + +Data/Monoid/Generator/Methods.hs + + + +
{-# LANGUAGE UndecidableInstances, TypeOperators, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances, TypeFamilies, ScopedTypeVariables #-}
+module Data.Monoid.Generator.Methods
+    ( module Data.Monoid.Generator
+    , traverse_
+    , for_
+    , mapM_
+    , forM_
+    , concatMap
+    , and
+    , or
+    , any
+    , all
+    , sum
+    , product
+    , elem
+    , notElem
+    ) where
+
+import Prelude hiding (mapM_, any, elem, filter, concatMap, and, or, all, sum, product, notElem)
+import Data.Monoid.Generator
+import Data.Monoid.Applicative
+import Data.Monoid.Monad
+
+traverse_ :: (Generator c, Applicative f) => (Elem c -> f b) -> c -> f ()
+traverse_ f = getTraversal . mapReduce f
+    
+for_ :: (Generator c, Applicative f) => c -> (Elem c -> f b) -> f ()
+for_ = flip traverse_
+
+mapM_ :: (Generator c, Monad m) => (Elem c -> m b) -> c -> m ()
+mapM_ f = getAction . mapReduce f
+
+forM_ :: (Generator c, Monad m) => c -> (Elem c -> m b) -> m ()
+forM_ = flip mapM_
+
+concatMap :: Generator c => (Elem c -> [b]) -> c -> [b]
+concatMap = mapReduce
+
+and :: (Generator c, Elem c ~ Bool) => c -> Bool
+and = getAll . reduce
+
+or :: (Generator c, Elem c ~ Bool) => c -> Bool
+or = getAny . reduce
+
+any :: Generator c => (Elem c -> Bool) -> c -> Bool
+any f = getAny . mapReduce f
+
+all :: Generator c => (Elem c -> Bool) -> c -> Bool
+all f = getAll . mapReduce f
+
+sum :: (Generator c, Num (Elem c)) => c -> Elem c
+sum = getSum . reduce
+
+product :: (Generator c, Num (Elem c)) => c -> Elem c
+product = getProduct . reduce
+
+elem :: (Generator c, Eq (Elem c)) => Elem c -> c -> Bool
+elem = any . (==)
+
+notElem :: (Generator c, Eq (Elem c)) => Elem c -> c -> Bool
+notElem x = not . elem x
+
+-- foldMap :: Generator c => (Elem c -> m) -> c -> m
+
+-- filter :: (Generator c, Elem c `Reducer` m, m `Reducer` m) => (Elem c -> Bool) -> c -> m
+-- filter p = mapReduce (\x -> if p x then unit x else mempty)
+
+-- find :: Generator c => (Elem c -> Bool) -> c -> Maybe (Elem c)
+-- find p = getFirst . filter p
+
+ }