monoids-0.1.2: Data/Monoid/Monad/IO.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
module Data.Monoid.Monad.IO
( module System.IO
, module Data.Monoid.Reducer
, module Control.Monad
) where
import System.IO
import Data.Monoid.Reducer
import Control.Monad
import Control.Monad.ST
import Control.Concurrent.STM
instance Monoid m => Monoid (IO m) where
mempty = return mempty
mappend = liftM2 mappend
instance Monoid m => Reducer m (IO m) where
unit = return
instance Monoid m => Reducer (ST RealWorld m) (IO m) where
unit = stToIO
instance Monoid m => Reducer (STM m) (IO m) where
unit = atomically