module Data.Monoid.Reducer.Char
( module Data.Monoid.Reducer
, CharReducer
, invalidChar
, fromChar
) where
import Data.Monoid.Reducer
import Data.Word (Word8)
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]