monoids-0.1.5: Data/Monoid/Reducer/Char.hs
{-# LANGUAGE UndecidableInstances, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances #-}
-----------------------------------------------------------------------------
-- |
-- Module : Data.Monoid.Reducer.Char
-- Copyright : (c) Edward Kmett 2009
-- License : BSD-style
-- Maintainer : libraries@haskell.org
-- Stability : experimental
-- Portability : non-portable (MPTCs)
--
-----------------------------------------------------------------------------
module Data.Monoid.Reducer.Char
( module Data.Monoid.Reducer
, CharReducer
, invalidChar
, fromChar
) where
import Data.Monoid.Reducer
import Data.Word (Word8)
-- | Provides a mechanism for the UTF8 'Monoid' to report invalid characters to one or more monoids.
class Reducer Char m => CharReducer m where
fromChar :: Char -> m
fromChar = unit
invalidChar :: [Word8] -> m
invalidChar = const mempty
instance (CharReducer m, CharReducer m') => CharReducer (m,m') where
invalidChar bs = (invalidChar bs, invalidChar bs)
instance (CharReducer m, CharReducer m', CharReducer m'') => CharReducer (m,m',m'') where
invalidChar bs = (invalidChar bs, invalidChar bs, invalidChar bs)
instance (CharReducer m, CharReducer m', CharReducer m'', CharReducer m''') => CharReducer (m,m',m'',m''') where
invalidChar bs = (invalidChar bs, invalidChar bs, invalidChar bs, invalidChar bs)
instance CharReducer [Char]