symantic-parser-0.2.0.20210703: parsers/Parsers/Utils.hs
module Parsers.Utils
( module Parsers.Utils
, w2c
)
where
import Data.Char (Char)
import Data.Function ((.), id)
import Data.Word (Word8)
import Prelude (Enum(..))
import Data.ByteString.Internal (w2c, c2w)
-- * Class 'CoerceEnum'
-- | Convenient helper to write generic grammars
-- consuming either 'Word8' or 'Char'.
class CoerceEnum a b where
coerceEnum :: a -> b
default coerceEnum :: Enum a => Enum b => a -> b
coerceEnum = toEnum . fromEnum
instance CoerceEnum Word8 Char where
coerceEnum = w2c
instance CoerceEnum Char Word8 where
coerceEnum = c2w
instance CoerceEnum Char Char where
coerceEnum = id