vgrep-0.2.2.0: A pager for grep

Safe HaskellNone
LanguageHaskell2010

Vgrep.Type

Contents

Description

The VgrepT monad transformer allows reading from the Environment and changing the state of the App or a Widget.

Synopsis

The VgrepT monad transformer

data VgrepT s m a Source #

The VgrepT monad transformer is parameterized over the state s of a Widget or an App.

Instances

Monad m => MonadReader Environment (VgrepT s m) Source #

VgrepT can read from the Environment. Modifications to the enviromnent are only possible globally (see modifyEnvironment), the local environment is pure.

Methods

ask :: VgrepT s m Environment #

local :: (Environment -> Environment) -> VgrepT s m a -> VgrepT s m a #

reader :: (Environment -> a) -> VgrepT s m a #

Monad m => MonadState s (VgrepT s m) Source # 

Methods

get :: VgrepT s m s #

put :: s -> VgrepT s m () #

state :: (s -> (a, s)) -> VgrepT s m a #

MonadTrans (VgrepT s) Source # 

Methods

lift :: Monad m => m a -> VgrepT s m a #

MFunctor * (VgrepT s) Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b #

Monad m => Monad (VgrepT s m) Source # 

Methods

(>>=) :: VgrepT s m a -> (a -> VgrepT s m b) -> VgrepT s m b #

(>>) :: VgrepT s m a -> VgrepT s m b -> VgrepT s m b #

return :: a -> VgrepT s m a #

fail :: String -> VgrepT s m a #

Functor m => Functor (VgrepT s m) Source # 

Methods

fmap :: (a -> b) -> VgrepT s m a -> VgrepT s m b #

(<$) :: a -> VgrepT s m b -> VgrepT s m a #

Monad m => Applicative (VgrepT s m) Source # 

Methods

pure :: a -> VgrepT s m a #

(<*>) :: VgrepT s m (a -> b) -> VgrepT s m a -> VgrepT s m b #

liftA2 :: (a -> b -> c) -> VgrepT s m a -> VgrepT s m b -> VgrepT s m c #

(*>) :: VgrepT s m a -> VgrepT s m b -> VgrepT s m b #

(<*) :: VgrepT s m a -> VgrepT s m b -> VgrepT s m a #

MonadIO m => MonadIO (VgrepT s m) Source # 

Methods

liftIO :: IO a -> VgrepT s m a #

Monad m => Zoom (VgrepT s m) (VgrepT t m) s t Source # 

Methods

zoom :: LensLike' (Zoomed (VgrepT s m) c) t s -> VgrepT s m c -> VgrepT t m c #

type Zoomed (VgrepT s m) Source # 

mkVgrepT :: Monad m => (s -> Environment -> m (a, s)) -> VgrepT s m a Source #

Lift a monadic action to VgrepT.

runVgrepT :: Monad m => VgrepT s m a -> s -> Environment -> m (a, s) Source #

Pass an initial state and an Environment and reduce a VgrepT action to an action in the base monad.

Modifying the environment

modifyEnvironment :: Monad m => (Environment -> Environment) -> VgrepT s m () Source #

The Environment of VgrepT is not stateful, however it can be modified globally. An example is resizing the application by changing the display bounds.

Utilities

vgrepBracket :: IO a -> (a -> IO c) -> (a -> VgrepT s IO b) -> VgrepT s IO b Source #

A version of bracket where the action is lifted to VgrepT.

Re-exports

lift :: MonadTrans t => forall (m :: * -> *) a. Monad m => m a -> t m a #

Lift a computation from the argument monad to the constructed monad.

hoist :: MFunctor k t => forall (m :: * -> *) (n :: * -> *) (b :: k). Monad m => (forall a. m a -> n a) -> t m b -> t n b #

Lift a monad morphism from m to n into a monad morphism from (t m) to (t n)

The first argument to hoist must be a monad morphism, even though the type system does not enforce this