haskeline-0.8.5.0: A command-line interface for user input, written in Haskell.
Safe HaskellNone
LanguageHaskell98

System.Console.Haskeline.Internal

Description

A module containing semi-public internals. The functions here are not stable.

Synopsis

Documentation

asks :: MonadReader r m => (r -> a) -> m a Source #

evalStateT' :: Monad m => s -> StateT s m a -> m a Source #

gets :: MonadState s m => (s -> a) -> m a Source #

modify :: MonadState s m => (s -> s) -> m () Source #

orElse :: Monad m => MaybeT m a -> m a -> m a Source #

runReaderT' :: r -> ReaderT r m a -> m a Source #

update :: MonadState s m => (s -> (a, s)) -> m a Source #

mapReaderT :: (m a -> n b) -> ReaderT r m a -> ReaderT r n b Source #

Transform the computation inside a ReaderT.

mapStateT :: (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b Source #

Map both the return value and final state of a computation using the given function.

class Monad m => MonadIO (m :: Type -> Type) where Source #

Monads in which IO computations may be embedded. Any monad built by applying a sequence of monad transformers to the IO monad will be an instance of this class.

Instances should satisfy the following laws, which state that liftIO is a transformer of monads:

Methods

liftIO :: IO a -> m a Source #

Lift a computation from the IO monad. This allows us to run IO computations in any monadic stack, so long as it supports these kinds of operations (i.e. IO is the base monad for the stack).

Example

Expand
import Control.Monad.Trans.State -- from the "transformers" library

printState :: Show s => StateT s IO ()
printState = do
  state <- get
  liftIO $ print state

Had we omitted liftIO, we would have ended up with this error:

• Couldn't match type ‘IO’ with ‘StateT s IO’
 Expected type: StateT s IO ()
   Actual type: IO ()

The important part here is the mismatch between StateT s IO () and IO ().

Luckily, we know of a function that takes an IO a and returns an (m a): liftIO, enabling us to run the program and see the expected results:

> evalStateT printState "hello"
"hello"

> evalStateT printState 3
3

Instances

Instances details
MonadIO IO Source #

Since: base-4.9.0.0

Instance details

Defined in GHC.Internal.Control.Monad.IO.Class

Methods

liftIO :: IO a -> IO a Source #

MonadIO m => MonadIO (CatchT m) Source # 
Instance details

Defined in Control.Monad.Catch.Pure

Methods

liftIO :: IO a -> CatchT m a Source #

MonadIO m => MonadIO (InputT m) Source # 
Instance details

Defined in System.Console.Haskeline.InputT

Methods

liftIO :: IO a -> InputT m a Source #

MonadIO m => MonadIO (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

liftIO :: IO a -> MaybeT m a Source #

(Monoid w, Functor m, MonadIO m) => MonadIO (AccumT w m) Source # 
Instance details

Defined in Control.Monad.Trans.Accum

Methods

liftIO :: IO a -> AccumT w m a Source #

MonadIO m => MonadIO (ExceptT e m) Source # 
Instance details

Defined in Control.Monad.Trans.Except

Methods

liftIO :: IO a -> ExceptT e m a Source #

MonadIO m => MonadIO (IdentityT m) Source # 
Instance details

Defined in Control.Monad.Trans.Identity

Methods

liftIO :: IO a -> IdentityT m a Source #

MonadIO m => MonadIO (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

liftIO :: IO a -> ReaderT r m a Source #

MonadIO m => MonadIO (SelectT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Select

Methods

liftIO :: IO a -> SelectT r m a Source #

MonadIO m => MonadIO (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Lazy

Methods

liftIO :: IO a -> StateT s m a Source #

MonadIO m => MonadIO (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

liftIO :: IO a -> StateT s m a Source #

MonadIO m => MonadIO (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Trans.Writer.CPS

Methods

liftIO :: IO a -> WriterT w m a Source #

(Monoid w, MonadIO m) => MonadIO (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Trans.Writer.Lazy

Methods

liftIO :: IO a -> WriterT w m a Source #

(Monoid w, MonadIO m) => MonadIO (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Trans.Writer.Strict

Methods

liftIO :: IO a -> WriterT w m a Source #

MonadIO m => MonadIO (ContT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Cont

Methods

liftIO :: IO a -> ContT r m a Source #

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

Defined in Control.Monad.Trans.RWS.CPS

Methods

liftIO :: IO a -> RWST r w s m a Source #

(Monoid w, MonadIO m) => MonadIO (RWST r w s m) Source # 
Instance details

Defined in Control.Monad.Trans.RWS.Lazy

Methods

liftIO :: IO a -> RWST r w s m a Source #

(Monoid w, MonadIO m) => MonadIO (RWST r w s m) Source # 
Instance details

Defined in Control.Monad.Trans.RWS.Strict

Methods

liftIO :: IO a -> RWST r w s m a Source #

class Monad m => MonadReader r (m :: Type -> Type) where Source #

Methods

ask :: m r Source #

Instances

Instances details
(MonadReader r m, MonadTrans t, Monad (t m)) => MonadReader r (t m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

ask :: t m r Source #

Monad m => MonadReader r (ReaderT r m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

ask :: ReaderT r m r Source #

Monad m => MonadReader s (StateT s m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

ask :: StateT s m s Source #

class Monad m => MonadState s (m :: Type -> Type) where Source #

Methods

get :: m s Source #

put :: s -> m () Source #

Instances

Instances details
(MonadState s m, MonadTrans t, Monad (t m)) => MonadState s (t m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

get :: t m s Source #

put :: s -> t m () Source #

MonadIO m => MonadState s (ReaderT (IORef s) m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

get :: ReaderT (IORef s) m s Source #

put :: s -> ReaderT (IORef s) m () Source #

Monad m => MonadState s (StateT s m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

get :: StateT s m s Source #

put :: s -> StateT s m () Source #

class (forall m. Monad m => Monad (t m)) => MonadTrans (t :: (Type -> Type) -> Type -> Type) where Source #

The class of monad transformers. For any monad m, the result t m should also be a monad, and lift should be a monad transformation from m to t m, i.e. it should satisfy the following laws:

Since 0.6.0.0 and for GHC 8.6 and later, the requirement that t m be a Monad is enforced by the implication constraint forall m. Monad m => Monad (t m) enabled by the QuantifiedConstraints extension.

Ambiguity error with GHC 9.0 to 9.2.2

Expand

These versions of GHC have a bug (https://gitlab.haskell.org/ghc/ghc/-/issues/20582) which causes constraints like

(MonadTrans t, forall m. Monad m => Monad (t m)) => ...

to be reported as ambiguous. For transformers 0.6 and later, this can be fixed by removing the second constraint, which is implied by the first.

Methods

lift :: Monad m => m a -> t m a Source #

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

Instances

Instances details
MonadTrans CatchT Source # 
Instance details

Defined in Control.Monad.Catch.Pure

Methods

lift :: Monad m => m a -> CatchT m a Source #

MonadTrans InputT Source # 
Instance details

Defined in System.Console.Haskeline.InputT

Methods

lift :: Monad m => m a -> InputT m a Source #

MonadTrans MaybeT Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

lift :: Monad m => m a -> MaybeT m a Source #

Monoid w => MonadTrans (AccumT w) Source # 
Instance details

Defined in Control.Monad.Trans.Accum

Methods

lift :: Monad m => m a -> AccumT w m a Source #

MonadTrans (ExceptT e) Source # 
Instance details

Defined in Control.Monad.Trans.Except

Methods

lift :: Monad m => m a -> ExceptT e m a Source #

MonadTrans (IdentityT :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Trans.Identity

Methods

lift :: Monad m => m a -> IdentityT m a Source #

MonadTrans (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

lift :: Monad m => m a -> ReaderT r m a Source #

MonadTrans (SelectT r) Source # 
Instance details

Defined in Control.Monad.Trans.Select

Methods

lift :: Monad m => m a -> SelectT r m a Source #

MonadTrans (StateT s) Source # 
Instance details

Defined in Control.Monad.Trans.State.Lazy

Methods

lift :: Monad m => m a -> StateT s m a Source #

MonadTrans (StateT s) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

lift :: Monad m => m a -> StateT s m a Source #

MonadTrans (WriterT w) Source # 
Instance details

Defined in Control.Monad.Trans.Writer.CPS

Methods

lift :: Monad m => m a -> WriterT w m a Source #

Monoid w => MonadTrans (WriterT w) Source # 
Instance details

Defined in Control.Monad.Trans.Writer.Lazy

Methods

lift :: Monad m => m a -> WriterT w m a Source #

Monoid w => MonadTrans (WriterT w) Source # 
Instance details

Defined in Control.Monad.Trans.Writer.Strict

Methods

lift :: Monad m => m a -> WriterT w m a Source #

MonadTrans (ContT r) Source # 
Instance details

Defined in Control.Monad.Trans.Cont

Methods

lift :: Monad m => m a -> ContT r m a Source #

MonadTrans (RWST r w s) Source # 
Instance details

Defined in Control.Monad.Trans.RWS.CPS

Methods

lift :: Monad m => m a -> RWST r w s m a Source #

Monoid w => MonadTrans (RWST r w s) Source # 
Instance details

Defined in Control.Monad.Trans.RWS.Lazy

Methods

lift :: Monad m => m a -> RWST r w s m a Source #

Monoid w => MonadTrans (RWST r w s) Source # 
Instance details

Defined in Control.Monad.Trans.RWS.Strict

Methods

lift :: Monad m => m a -> RWST r w s m a Source #

newtype MaybeT (m :: Type -> Type) a Source #

The parameterizable maybe monad, a strict monad obtained by composing an arbitrary monad with the Maybe monad.

Computations are actions that may produce a value or exit.

The return function yields a computation that produces that value, while >>= sequences two subcomputations, exiting if either computation does.

Constructors

MaybeT 

Fields

Instances

Instances details
MonadTrans MaybeT Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

lift :: Monad m => m a -> MaybeT m a Source #

Functor m => Generic1 (MaybeT m :: Type -> Type) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Associated Types

type Rep1 (MaybeT m :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Maybe

type Rep1 (MaybeT m :: Type -> Type) = D1 ('MetaData "MaybeT" "Control.Monad.Trans.Maybe" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "MaybeT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runMaybeT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (m :.: Rec1 Maybe)))

Methods

from1 :: MaybeT m a -> Rep1 (MaybeT m) a Source #

to1 :: Rep1 (MaybeT m) a -> MaybeT m a Source #

Eq1 m => Eq1 (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

liftEq :: (a -> b -> Bool) -> MaybeT m a -> MaybeT m b -> Bool Source #

Ord1 m => Ord1 (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

liftCompare :: (a -> b -> Ordering) -> MaybeT m a -> MaybeT m b -> Ordering Source #

Read1 m => Read1 (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (MaybeT m a) Source #

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [MaybeT m a] Source #

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (MaybeT m a) Source #

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [MaybeT m a] Source #

Show1 m => Show1 (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> MaybeT m a -> ShowS Source #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [MaybeT m a] -> ShowS Source #

Contravariant m => Contravariant (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

contramap :: (a' -> a) -> MaybeT m a -> MaybeT m a' Source #

(>$) :: b -> MaybeT m b -> MaybeT m a Source #

MonadCatch m => MonadCatch (MaybeT m) Source #

Catches exceptions from the base monad.

Instance details

Defined in Control.Monad.Catch

Methods

catch :: (HasCallStack, Exception e) => MaybeT m a -> (e -> MaybeT m a) -> MaybeT m a Source #

catchNoPropagate :: Exception e => MaybeT m a -> (ExceptionWithContext e -> MaybeT m a) -> MaybeT m a Source #

MonadMask m => MonadMask (MaybeT m) Source #

Since: exceptions-0.10.0

Instance details

Defined in Control.Monad.Catch

Methods

mask :: HasCallStack => ((forall a. MaybeT m a -> MaybeT m a) -> MaybeT m b) -> MaybeT m b Source #

uninterruptibleMask :: HasCallStack => ((forall a. MaybeT m a -> MaybeT m a) -> MaybeT m b) -> MaybeT m b Source #

generalBracket :: HasCallStack => MaybeT m a -> (a -> ExitCase b -> MaybeT m c) -> (a -> MaybeT m b) -> MaybeT m (b, c) Source #

MonadThrow m => MonadThrow (MaybeT m) Source #

Throws exceptions into the base monad.

Instance details

Defined in Control.Monad.Catch

(Functor m, Monad m) => Alternative (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

empty :: MaybeT m a Source #

(<|>) :: MaybeT m a -> MaybeT m a -> MaybeT m a Source #

some :: MaybeT m a -> MaybeT m [a] Source #

many :: MaybeT m a -> MaybeT m [a] Source #

(Functor m, Monad m) => Applicative (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

pure :: a -> MaybeT m a Source #

(<*>) :: MaybeT m (a -> b) -> MaybeT m a -> MaybeT m b Source #

liftA2 :: (a -> b -> c) -> MaybeT m a -> MaybeT m b -> MaybeT m c Source #

(*>) :: MaybeT m a -> MaybeT m b -> MaybeT m b Source #

(<*) :: MaybeT m a -> MaybeT m b -> MaybeT m a Source #

Functor m => Functor (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

fmap :: (a -> b) -> MaybeT m a -> MaybeT m b Source #

(<$) :: a -> MaybeT m b -> MaybeT m a Source #

Monad m => Monad (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

(>>=) :: MaybeT m a -> (a -> MaybeT m b) -> MaybeT m b Source #

(>>) :: MaybeT m a -> MaybeT m b -> MaybeT m b Source #

return :: a -> MaybeT m a Source #

Monad m => MonadPlus (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

mzero :: MaybeT m a Source #

mplus :: MaybeT m a -> MaybeT m a -> MaybeT m a Source #

Monad m => MonadFail (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

fail :: HasCallStack => String -> MaybeT m a Source #

MonadFix m => MonadFix (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

mfix :: (a -> MaybeT m a) -> MaybeT m a Source #

MonadIO m => MonadIO (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

liftIO :: IO a -> MaybeT m a Source #

MonadZip m => MonadZip (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

mzip :: MaybeT m a -> MaybeT m b -> MaybeT m (a, b) Source #

mzipWith :: (a -> b -> c) -> MaybeT m a -> MaybeT m b -> MaybeT m c Source #

munzip :: MaybeT m (a, b) -> (MaybeT m a, MaybeT m b) Source #

Foldable f => Foldable (MaybeT f) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

fold :: Monoid m => MaybeT f m -> m Source #

foldMap :: Monoid m => (a -> m) -> MaybeT f a -> m Source #

foldMap' :: Monoid m => (a -> m) -> MaybeT f a -> m Source #

foldr :: (a -> b -> b) -> b -> MaybeT f a -> b Source #

foldr' :: (a -> b -> b) -> b -> MaybeT f a -> b Source #

foldl :: (b -> a -> b) -> b -> MaybeT f a -> b Source #

foldl' :: (b -> a -> b) -> b -> MaybeT f a -> b Source #

foldr1 :: (a -> a -> a) -> MaybeT f a -> a Source #

foldl1 :: (a -> a -> a) -> MaybeT f a -> a Source #

toList :: MaybeT f a -> [a] Source #

null :: MaybeT f a -> Bool Source #

length :: MaybeT f a -> Int Source #

elem :: Eq a => a -> MaybeT f a -> Bool Source #

maximum :: Ord a => MaybeT f a -> a Source #

minimum :: Ord a => MaybeT f a -> a Source #

sum :: Num a => MaybeT f a -> a Source #

product :: Num a => MaybeT f a -> a Source #

Traversable f => Traversable (MaybeT f) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

traverse :: Applicative f0 => (a -> f0 b) -> MaybeT f a -> f0 (MaybeT f b) Source #

sequenceA :: Applicative f0 => MaybeT f (f0 a) -> f0 (MaybeT f a) Source #

mapM :: Monad m => (a -> m b) -> MaybeT f a -> m (MaybeT f b) Source #

sequence :: Monad m => MaybeT f (m a) -> m (MaybeT f a) Source #

(Eq1 m, Eq a) => Eq (MaybeT m a) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

(==) :: MaybeT m a -> MaybeT m a -> Bool Source #

(/=) :: MaybeT m a -> MaybeT m a -> Bool Source #

(Ord1 m, Ord a) => Ord (MaybeT m a) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

compare :: MaybeT m a -> MaybeT m a -> Ordering Source #

(<) :: MaybeT m a -> MaybeT m a -> Bool Source #

(<=) :: MaybeT m a -> MaybeT m a -> Bool Source #

(>) :: MaybeT m a -> MaybeT m a -> Bool Source #

(>=) :: MaybeT m a -> MaybeT m a -> Bool Source #

max :: MaybeT m a -> MaybeT m a -> MaybeT m a Source #

min :: MaybeT m a -> MaybeT m a -> MaybeT m a Source #

Generic (MaybeT m a) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Associated Types

type Rep (MaybeT m a) 
Instance details

Defined in Control.Monad.Trans.Maybe

type Rep (MaybeT m a) = D1 ('MetaData "MaybeT" "Control.Monad.Trans.Maybe" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "MaybeT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runMaybeT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (m (Maybe a)))))

Methods

from :: MaybeT m a -> Rep (MaybeT m a) x Source #

to :: Rep (MaybeT m a) x -> MaybeT m a Source #

(Read1 m, Read a) => Read (MaybeT m a) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

(Show1 m, Show a) => Show (MaybeT m a) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

showsPrec :: Int -> MaybeT m a -> ShowS Source #

show :: MaybeT m a -> String Source #

showList :: [MaybeT m a] -> ShowS Source #

type Rep1 (MaybeT m :: Type -> Type) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

type Rep1 (MaybeT m :: Type -> Type) = D1 ('MetaData "MaybeT" "Control.Monad.Trans.Maybe" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "MaybeT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runMaybeT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (m :.: Rec1 Maybe)))
type Rep (MaybeT m a) Source # 
Instance details

Defined in Control.Monad.Trans.Maybe

type Rep (MaybeT m a) = D1 ('MetaData "MaybeT" "Control.Monad.Trans.Maybe" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "MaybeT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runMaybeT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (m (Maybe a)))))

data ReaderT r (m :: Type -> Type) a Source #

The reader monad transformer, which adds a read-only environment to the given monad.

The return function ignores the environment, while m >>= k passes the inherited environment to both subcomputations:

ReaderT r m is strict if and only if m is.

Instances

Instances details
Generic1 (ReaderT r m :: Type -> Type) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Associated Types

type Rep1 (ReaderT r m :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Reader

type Rep1 (ReaderT r m :: Type -> Type) = D1 ('MetaData "ReaderT" "Control.Monad.Trans.Reader" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "ReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ((FUN 'Many r :: Type -> Type) :.: Rec1 m)))

Methods

from1 :: ReaderT r m a -> Rep1 (ReaderT r m) a Source #

to1 :: Rep1 (ReaderT r m) a -> ReaderT r m a Source #

Monad m => MonadReader r (ReaderT r m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

ask :: ReaderT r m r Source #

MonadIO m => MonadState s (ReaderT (IORef s) m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

get :: ReaderT (IORef s) m s Source #

put :: s -> ReaderT (IORef s) m () Source #

MonadTrans (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

lift :: Monad m => m a -> ReaderT r m a Source #

Contravariant m => Contravariant (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

contramap :: (a' -> a) -> ReaderT r m a -> ReaderT r m a' Source #

(>$) :: b -> ReaderT r m b -> ReaderT r m a Source #

MonadCatch m => MonadCatch (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Catch

Methods

catch :: (HasCallStack, Exception e) => ReaderT r m a -> (e -> ReaderT r m a) -> ReaderT r m a Source #

catchNoPropagate :: Exception e => ReaderT r m a -> (ExceptionWithContext e -> ReaderT r m a) -> ReaderT r m a Source #

MonadMask m => MonadMask (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Catch

Methods

mask :: HasCallStack => ((forall a. ReaderT r m a -> ReaderT r m a) -> ReaderT r m b) -> ReaderT r m b Source #

uninterruptibleMask :: HasCallStack => ((forall a. ReaderT r m a -> ReaderT r m a) -> ReaderT r m b) -> ReaderT r m b Source #

generalBracket :: HasCallStack => ReaderT r m a -> (a -> ExitCase b -> ReaderT r m c) -> (a -> ReaderT r m b) -> ReaderT r m (b, c) Source #

MonadThrow m => MonadThrow (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Catch

Alternative m => Alternative (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

empty :: ReaderT r m a Source #

(<|>) :: ReaderT r m a -> ReaderT r m a -> ReaderT r m a Source #

some :: ReaderT r m a -> ReaderT r m [a] Source #

many :: ReaderT r m a -> ReaderT r m [a] Source #

Applicative m => Applicative (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

pure :: a -> ReaderT r m a Source #

(<*>) :: ReaderT r m (a -> b) -> ReaderT r m a -> ReaderT r m b Source #

liftA2 :: (a -> b -> c) -> ReaderT r m a -> ReaderT r m b -> ReaderT r m c Source #

(*>) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m b Source #

(<*) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m a Source #

Functor m => Functor (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

fmap :: (a -> b) -> ReaderT r m a -> ReaderT r m b Source #

(<$) :: a -> ReaderT r m b -> ReaderT r m a Source #

Monad m => Monad (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

(>>=) :: ReaderT r m a -> (a -> ReaderT r m b) -> ReaderT r m b Source #

(>>) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m b Source #

return :: a -> ReaderT r m a Source #

MonadPlus m => MonadPlus (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

mzero :: ReaderT r m a Source #

mplus :: ReaderT r m a -> ReaderT r m a -> ReaderT r m a Source #

MonadFail m => MonadFail (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

fail :: HasCallStack => String -> ReaderT r m a Source #

MonadFix m => MonadFix (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

mfix :: (a -> ReaderT r m a) -> ReaderT r m a Source #

MonadIO m => MonadIO (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

liftIO :: IO a -> ReaderT r m a Source #

MonadZip m => MonadZip (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

mzip :: ReaderT r m a -> ReaderT r m b -> ReaderT r m (a, b) Source #

mzipWith :: (a -> b -> c) -> ReaderT r m a -> ReaderT r m b -> ReaderT r m c Source #

munzip :: ReaderT r m (a, b) -> (ReaderT r m a, ReaderT r m b) Source #

Generic (ReaderT r m a) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

Associated Types

type Rep (ReaderT r m a) 
Instance details

Defined in Control.Monad.Trans.Reader

type Rep (ReaderT r m a) = D1 ('MetaData "ReaderT" "Control.Monad.Trans.Reader" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "ReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (r -> m a))))

Methods

from :: ReaderT r m a -> Rep (ReaderT r m a) x Source #

to :: Rep (ReaderT r m a) x -> ReaderT r m a Source #

type Rep1 (ReaderT r m :: Type -> Type) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

type Rep1 (ReaderT r m :: Type -> Type) = D1 ('MetaData "ReaderT" "Control.Monad.Trans.Reader" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "ReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ((FUN 'Many r :: Type -> Type) :.: Rec1 m)))
type Rep (ReaderT r m a) Source # 
Instance details

Defined in Control.Monad.Trans.Reader

type Rep (ReaderT r m a) = D1 ('MetaData "ReaderT" "Control.Monad.Trans.Reader" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "ReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (r -> m a))))

data StateT s (m :: Type -> Type) a Source #

A state transformer monad parameterized by:

  • s - The state.
  • m - The inner monad.

The return function leaves the state unchanged, while >>= uses the final state of the first computation as the initial state of the second.

Instances

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

Defined in System.Console.Haskeline.Monads

Methods

ask :: StateT s m s Source #

Monad m => MonadState s (StateT s m) Source # 
Instance details

Defined in System.Console.Haskeline.Monads

Methods

get :: StateT s m s Source #

put :: s -> StateT s m () Source #

MonadTrans (StateT s) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

lift :: Monad m => m a -> StateT s m a Source #

Contravariant m => Contravariant (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

contramap :: (a' -> a) -> StateT s m a -> StateT s m a' Source #

(>$) :: b -> StateT s m b -> StateT s m a Source #

MonadCatch m => MonadCatch (StateT s m) Source # 
Instance details

Defined in Control.Monad.Catch

Methods

catch :: (HasCallStack, Exception e) => StateT s m a -> (e -> StateT s m a) -> StateT s m a Source #

catchNoPropagate :: Exception e => StateT s m a -> (ExceptionWithContext e -> StateT s m a) -> StateT s m a Source #

MonadMask m => MonadMask (StateT s m) Source # 
Instance details

Defined in Control.Monad.Catch

Methods

mask :: HasCallStack => ((forall a. StateT s m a -> StateT s m a) -> StateT s m b) -> StateT s m b Source #

uninterruptibleMask :: HasCallStack => ((forall a. StateT s m a -> StateT s m a) -> StateT s m b) -> StateT s m b Source #

generalBracket :: HasCallStack => StateT s m a -> (a -> ExitCase b -> StateT s m c) -> (a -> StateT s m b) -> StateT s m (b, c) Source #

MonadThrow m => MonadThrow (StateT s m) Source # 
Instance details

Defined in Control.Monad.Catch

(Functor m, MonadPlus m) => Alternative (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

empty :: StateT s m a Source #

(<|>) :: StateT s m a -> StateT s m a -> StateT s m a Source #

some :: StateT s m a -> StateT s m [a] Source #

many :: StateT s m a -> StateT s m [a] Source #

(Functor m, Monad m) => Applicative (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

pure :: a -> StateT s m a Source #

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

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

(*>) :: StateT s m a -> StateT s m b -> StateT s m b Source #

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

Functor m => Functor (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

fmap :: (a -> b) -> StateT s m a -> StateT s m b Source #

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

Monad m => Monad (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

(>>=) :: StateT s m a -> (a -> StateT s m b) -> StateT s m b Source #

(>>) :: StateT s m a -> StateT s m b -> StateT s m b Source #

return :: a -> StateT s m a Source #

MonadPlus m => MonadPlus (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

mzero :: StateT s m a Source #

mplus :: StateT s m a -> StateT s m a -> StateT s m a Source #

MonadFail m => MonadFail (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

fail :: HasCallStack => String -> StateT s m a Source #

MonadFix m => MonadFix (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

mfix :: (a -> StateT s m a) -> StateT s m a Source #

MonadIO m => MonadIO (StateT s m) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Methods

liftIO :: IO a -> StateT s m a Source #

Generic (StateT s m a) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

Associated Types

type Rep (StateT s m a) 
Instance details

Defined in Control.Monad.Trans.State.Strict

type Rep (StateT s m a) = D1 ('MetaData "StateT" "Control.Monad.Trans.State.Strict" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "StateT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runStateT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (s -> m (a, s)))))

Methods

from :: StateT s m a -> Rep (StateT s m a) x Source #

to :: Rep (StateT s m a) x -> StateT s m a Source #

type Rep (StateT s m a) Source # 
Instance details

Defined in Control.Monad.Trans.State.Strict

type Rep (StateT s m a) = D1 ('MetaData "StateT" "Control.Monad.Trans.State.Strict" "transformers-0.6.3.0-26b0" 'True) (C1 ('MetaCons "StateT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runStateT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (s -> m (a, s)))))

bracketSet :: (MonadMask m, MonadIO m) => IO a -> (a -> IO ()) -> a -> m b -> m b Source #

Utility function for changing a property of a terminal for the duration of a computation.

clearLine :: Term m => LineChars -> m () Source #

drawLine :: Term m => LineChars -> m () Source #

hGetByte :: Handle -> MaybeT IO Word8 Source #

Returns one 8-bit word. Needs to be wrapped by hWithBinaryMode.

hGetLocaleLine :: Handle -> MaybeT IO ByteString Source #

Utility function to correctly get a line of input as an undecoded ByteString.

hWithBinaryMode :: (MonadIO m, MonadMask m) => Handle -> m a -> m a Source #

Utility function since we're not using the new IO library yet.

isTerminalStyle :: RunTerm -> Bool Source #

Are we using terminal-style interaction?

mapEvalTerm :: (forall a. n a -> m a) -> (forall a. m a -> n a) -> EvalTerm n -> EvalTerm m Source #

matchInit :: Eq a => [a] -> [a] -> ([a], [a]) Source #

returnOnEOF :: MonadMask m => a -> m a -> m a Source #

saveKeys :: TChan Event -> [Key] -> IO () Source #

class (MonadReader Prefs m, MonadReader Layout m, MonadIO m, MonadMask m) => CommandMonad (m :: Type -> Type) where Source #

Instances

Instances details
(MonadTrans t, CommandMonad m, MonadReader Prefs (t m), MonadIO (t m), MonadMask (t m), MonadReader Layout (t m)) => CommandMonad (t m) Source # 
Instance details

Defined in System.Console.Haskeline.Term

data EvalTerm (m :: Type -> Type) Source #

Constructors

(Term n, CommandMonad n) => EvalTerm (forall a. n a -> m a) (forall a. m a -> n a) 

data Event Source #

Instances

Instances details
Show Event Source # 
Instance details

Defined in System.Console.Haskeline.Term

data FileOps Source #

Operations needed for file-style interaction.

Backends can assume that getLocaleLine, getLocaleChar and maybeReadNewline are "wrapped" by wrapFileInput.

Constructors

FileOps 

Fields

data Layout Source #

Constructors

Layout 

Fields

Instances

Instances details
Eq Layout Source # 
Instance details

Defined in System.Console.Haskeline.Term

Show Layout Source # 
Instance details

Defined in System.Console.Haskeline.Term

data RunTerm Source #

Constructors

RunTerm 

Fields

data TermOps Source #

Operations needed for terminal-style interaction.

Constructors

TermOps 

Fields

data Key Source #

Constructors

Key Modifier BaseKey 

Instances

Instances details
Eq Key Source # 
Instance details

Defined in System.Console.Haskeline.Key

Methods

(==) :: Key -> Key -> Bool Source #

(/=) :: Key -> Key -> Bool Source #

Ord Key Source # 
Instance details

Defined in System.Console.Haskeline.Key

Methods

compare :: Key -> Key -> Ordering Source #

(<) :: Key -> Key -> Bool Source #

(<=) :: Key -> Key -> Bool Source #

(>) :: Key -> Key -> Bool Source #

(>=) :: Key -> Key -> Bool Source #

max :: Key -> Key -> Key Source #

min :: Key -> Key -> Key Source #

Show Key Source # 
Instance details

Defined in System.Console.Haskeline.Key

applyArg :: (s -> s) -> ArgMode s -> s Source #

insertChar :: Char -> InsertMode -> InsertMode Source #

Insert one character, which may be combining, to the left of the cursor.

insertString :: String -> InsertMode -> InsertMode Source #

Insert a sequence of characters to the left of the cursor.

lengthToEnd :: LineChars -> Int Source #

Compute the number of characters under and to the right of the cursor.

lineChars :: LineState s => Prefix -> s -> LineChars Source #

Accessor function for the various backends.

listSave :: Save s => s -> [Grapheme] Source #

startArg :: Int -> s -> ArgMode s Source #

stringToGraphemes :: String -> [Grapheme] Source #

Converts a string into a sequence of graphemes.

NOTE: Drops any initial, unattached combining characters.

data ArgMode s Source #

Used for commands which take an integer argument.

Constructors

ArgMode 

Fields

Instances

Instances details
Functor ArgMode Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Methods

fmap :: (a -> b) -> ArgMode a -> ArgMode b Source #

(<$) :: a -> ArgMode b -> ArgMode a Source #

LineState s => LineState (ArgMode s) Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Result s => Result (ArgMode s) Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Methods

toResult :: ArgMode s -> String Source #

Save s => Save (ArgMode s) Source # 
Instance details

Defined in System.Console.Haskeline.LineState

data Grapheme Source #

A Grapheme is a fundamental unit of display for the UI. Several characters in sequence can represent one grapheme; for example, an a followed by the diacritic '\768' should be treated as one unit.

Instances

Instances details
Eq Grapheme Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Show Grapheme Source # 
Instance details

Defined in System.Console.Haskeline.LineState

data InsertMode Source #

The standard line state representation; considers the cursor to be located between two characters. The first list is reversed.

Constructors

IMode [Grapheme] [Grapheme] 

type LineChars = ([Grapheme], [Grapheme]) Source #

The characters in the line (with the cursor in the middle). NOT in a zippered format; both lists are in the order left->right that appears on the screen.

class LineState s where Source #

This class abstracts away the internal representations of the line state, for use by the drawing actions. Line state is generally stored in a zipper format.

Methods

beforeCursor Source #

Arguments

:: Prefix

The input prefix.

-> s

The current line state.

-> [Grapheme]

The text to the left of the cursor (including the prefix).

afterCursor Source #

Arguments

:: s 
-> [Grapheme]

The text under and to the right of the cursor.

newtype Message Source #

Constructors

Message 

Fields

Instances

Instances details
LineState Message Source # 
Instance details

Defined in System.Console.Haskeline.LineState

data Password Source #

Constructors

Password 

Fields

Instances

Instances details
LineState Password Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Result Password Source # 
Instance details

Defined in System.Console.Haskeline.LineState

class LineState s => Result s where Source #

Methods

toResult :: s -> String Source #

Instances

Instances details
Result CommandMode Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Result InsertMode Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Result Password Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Result s => Result (ArgMode s) Source # 
Instance details

Defined in System.Console.Haskeline.LineState

Methods

toResult :: ArgMode s -> String Source #

data Behavior Source #

Haskeline has two ways of interacting with the user:

  • "Terminal-style" interaction provides an rich user interface by connecting to the user's terminal (which may be different than stdin or stdout).
  • "File-style" interaction treats the input as a simple stream of characters, for example when reading from a file or pipe. Input functions (e.g., getInputLine) print the prompt to stdout.

A Behavior is a method for deciding at run-time which type of interaction to use.

For most applications (e.g., a REPL), defaultBehavior should have the correct effect.

Constructors

Behavior (IO RunTerm) 

debugTerminalKeys :: IO a Source #

This function may be used to debug Haskeline's input.

It loops indefinitely; every time a key is pressed, it will print that key as it was recognized by Haskeline. Pressing Ctrl-C will stop the loop.

Haskeline's behavior may be modified by editing your ~/.haskeline file. For details, see: https://github.com/judah/haskeline/wiki/CustomKeyBindings