module Data.Monoid.Unit
( module Data.Monoid.Reducer
, Unit(Unit,getUnit)
) where
import Control.Functor.Pointed
import Data.Monoid.Reducer
import Data.Monoid.Reducer.Char
newtype Unit c = Unit { getUnit :: () }
instance Monoid (Unit c) where
mempty = Unit ()
_ `mappend` _ = Unit ()
mconcat _ = Unit ()
instance Reducer c (Unit c) where
unit _ = Unit ()
cons _ _ = Unit ()
snoc _ _ = Unit ()
instance CharReducer (Unit Char)
instance Functor Unit where
fmap _ _ = Unit ()
instance Pointed Unit where
point _ = Unit ()