{-# LANGUAGE FlexibleInstances, FlexibleContexts, UndecidableInstances, MultiParamTypeClasses #-} ----------------------------------------------------------------------------- ---- | ---- Module : Data.Monoid.Unit ---- Copyright : (c) Edward Kmett 2009 ---- License : BSD-style ---- Maintainer : libraries@haskell.org ---- Stability : experimental ---- Portability : portable ---- ----------------------------------------------------------------------------- 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 ()