{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}

module Data.Monoid.Monad.ST.Lazy
    ( module Control.Monad.ST.Lazy
    , module Control.Monad
    , module Data.Monoid.Reducer
    )  where

import Control.Monad
import Control.Monad.ST.Lazy
import Data.Monoid.Reducer

instance Monoid m => Monoid (ST s m) where
    mempty = return mempty
    mappend = liftM2 mappend

instance Monoid m => Reducer m (ST s m) where
    unit = return