chatty-0.7.0.1: Some monad transformers and typeclasses for abstraction of global dependencies.

Safe HaskellSafe
LanguageHaskell2010

Text.Chatty.Scanner.Buffered

Description

Provides a typeclass for buffered scanners as well as a buffering monad transformer.

Synopsis

Documentation

class ChScanner m => ChBufferedScanner m where Source #

Typeclass for all buffered ChScanners.

Minimal complete definition

mpeek1, mprepend

Methods

mpeek1 :: m Char Source #

Scan the next character without removing it.

mprepend :: String -> m () Source #

Prepend the given character to the scannable input.

class ChBufferedScanner m => ChStackBufferedScanner m where Source #

Typeclass for all BufferedScanners with support for pushing and popping.

Minimal complete definition

mpush, mpop

Methods

mpush :: m () Source #

Push the current input state to the stack.

mpop :: m () Source #

Pop the previous input state from the stack.

newtype ScannerBufferT m a Source #

A buffering MonadScanner transformer that lets you use mpeek1 and mprepend everywhere.

Constructors

ScannerBuffer 

Fields

Instances

MonadTrans ScannerBufferT Source # 

Methods

lift :: Monad m => m a -> ScannerBufferT m a #

Monad m => Monad (ScannerBufferT m) Source # 
Monad m => Functor (ScannerBufferT m) Source # 

Methods

fmap :: (a -> b) -> ScannerBufferT m a -> ScannerBufferT m b #

(<$) :: a -> ScannerBufferT m b -> ScannerBufferT m a #

Monad m => Applicative (ScannerBufferT m) Source # 
MonadIO m => MonadIO (ScannerBufferT m) Source # 

Methods

liftIO :: IO a -> ScannerBufferT m a #

ChScanner m => ChScanner (ScannerBufferT m) Source # 
ChScanner m => ChStackBufferedScanner (ScannerBufferT m) Source # 
ChScanner m => ChBufferedScanner (ScannerBufferT m) Source #