monoids-0.1.2: Data/Monoid/Unit.hs
{-# 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 ()