linenoise-0.3.1: A lightweight readline-replacement library for Haskell

Safe HaskellNone
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 

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
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 #

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 #

MonadTrans (ReplT r s) Source # 
Instance details

Defined in Linenoise.Repl

Methods

lift :: Monad m => m a -> 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 #

fail :: String -> 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 #

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 #

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

Defined in Linenoise.Repl

Methods

fail :: String -> 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 #

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) #

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

Defined in Linenoise.Repl

Methods

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

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] #

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 #

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

Defined in Linenoise.Repl

Methods

throwM :: Exception e => e -> ReplT r s m a #

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

Defined in Linenoise.Repl

Methods

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

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

Defined in Linenoise.Repl

Methods

askUnliftIO :: ReplT r s m (UnliftIO (ReplT r s m)) #

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.