{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-} module Text.Appar.Input where import qualified Data.ByteString.Char8 as S import qualified Data.ByteString.Lazy.Char8 as L ---------------------------------------------------------------- {-| The class for parser input. -} class Eq inp => Input inp where -- | The head function for input car :: inp -> Char -- | The tail function for input cdr :: inp -> inp -- | The end of input nil :: inp -- | The function to check the end of input isNil :: inp -> Bool instance Input S.ByteString where car = S.head cdr = S.tail nil = S.empty isNil = S.null instance Input L.ByteString where car = L.head cdr = L.tail nil = L.empty isNil = L.null instance Input String where car = head cdr = tail isNil = null nil = ""