linenoise-0.4.0: A lightweight readline-replacement library for Haskell
Safe HaskellSafe-Inferred
LanguageHaskell2010

Linenoise.Repl

Description

Helper functions and transformer to write your own REPLs.

Synopsis

Documentation

data ReplDirective Source #

Directive to control voluntary REPL termination.

Constructors

ReplQuit 
ReplContinue 

Instances

Instances details
Show ReplDirective Source # 
Instance details

Defined in Linenoise.Repl

Eq ReplDirective Source # 
Instance details

Defined in Linenoise.Repl

newtype ReplT r s m a Source #

Basic monad transformer with mutable state that can be used with all Linenoise.Unlift functions. You do not have to use this, but it's here to cover most of what you would need without having to roll your own newtype.

Constructors

ReplT 

Fields

Instances

Instances details
Monad m => MonadReader r (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

ask :: ReplT r s m r #

local :: (r -> r) -> ReplT r s m a -> ReplT r s m a #

reader :: (r -> a) -> ReplT r s m a #

MonadIO m => MonadState s (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

get :: ReplT r s m s #

put :: s -> ReplT r s m () #

state :: (s -> (a, s)) -> ReplT r s m a #

MonadTrans (ReplT r s) Source # 
Instance details

Defined in Linenoise.Repl

Methods

lift :: Monad m => m a -> ReplT r s m a #

MonadFail m => MonadFail (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

fail :: String -> ReplT r s m a #

MonadFix m => MonadFix (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

mfix :: (a -> ReplT r s m a) -> ReplT r s m a #

MonadIO m => MonadIO (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

liftIO :: IO a -> ReplT r s m a #

MonadZip m => MonadZip (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

mzip :: ReplT r s m a -> ReplT r s m b -> ReplT r s m (a, b) #

mzipWith :: (a -> b -> c) -> ReplT r s m a -> ReplT r s m b -> ReplT r s m c #

munzip :: ReplT r s m (a, b) -> (ReplT r s m a, ReplT r s m b) #

Alternative m => Alternative (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

empty :: ReplT r s m a #

(<|>) :: ReplT r s m a -> ReplT r s m a -> ReplT r s m a #

some :: ReplT r s m a -> ReplT r s m [a] #

many :: ReplT r s m a -> ReplT r s m [a] #

Applicative m => Applicative (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

pure :: a -> ReplT r s m a #

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

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

(*>) :: ReplT r s m a -> ReplT r s m b -> ReplT r s m b #

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

Functor m => Functor (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

fmap :: (a -> b) -> ReplT r s m a -> ReplT r s m b #

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

Monad m => Monad (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

(>>=) :: ReplT r s m a -> (a -> ReplT r s m b) -> ReplT r s m b #

(>>) :: ReplT r s m a -> ReplT r s m b -> ReplT r s m b #

return :: a -> ReplT r s m a #

MonadPlus m => MonadPlus (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

mzero :: ReplT r s m a #

mplus :: ReplT r s m a -> ReplT r s m a -> ReplT r s m a #

MonadCatch m => MonadCatch (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

catch :: (HasCallStack, Exception e) => ReplT r s m a -> (e -> ReplT r s m a) -> ReplT r s m a #

MonadThrow m => MonadThrow (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

throwM :: (HasCallStack, Exception e) => e -> ReplT r s m a #

MonadUnliftIO m => MonadUnliftIO (ReplT r s m) Source # 
Instance details

Defined in Linenoise.Repl

Methods

withRunInIO :: ((forall a. ReplT r s m a -> IO a) -> IO b) -> ReplT r s m b #

replM Source #

Arguments

:: MonadUnliftIO m 
=> ReplDirective

Directive on interrupt

-> Text

Prompt

-> (Text -> m ReplDirective)

Action

-> (Text -> m [Text])

Completion

-> m () 

Run a simple REPL.

runReplT :: MonadIO m => ReplT r s m a -> r -> s -> m (a, s) Source #

Run a ReplT.