extensible-0.4.7: Extensible, efficient, optics-friendly data types and effects

Copyright(c) Fumiaki Kinoshita 2017
LicenseBSD3
MaintainerFumiaki Kinoshita <fumiexcel@gmail.com>
Safe HaskellNone
LanguageHaskell2010

Data.Extensible.Effect.Default

Contents

Description

Default monad runners and MonadIO, MonadReader, MonadWriter, MonadState, MonadError instances

Synopsis

Documentation

type ReaderDef r = "Reader" >: ReaderEff r Source #

mtl-compatible reader

runReaderDef :: Eff (ReaderDef r ': xs) a -> r -> Eff xs a Source #

Specialised version of runReaderEff compatible with the MonadReader instance.

type StateDef s = "State" >: State s Source #

mtl-compatible state

runStateDef :: Eff (StateDef s ': xs) a -> s -> Eff xs (a, s) Source #

runStateEff specialised for the MonadState instance.

evalStateDef :: Eff (StateDef s ': xs) a -> s -> Eff xs a Source #

evalStateEff specialised for the MonadState instance.

execStateDef :: Eff (StateDef s ': xs) a -> s -> Eff xs s Source #

execStateEff specialised for the MonadState instance.

type WriterDef w = "Writer" >: WriterEff w Source #

mtl-compatible writer

runWriterDef :: Monoid w => Eff (WriterDef w ': xs) a -> Eff xs (a, w) Source #

runWriterDef specialised for the MonadWriter instance.

execWriterDef :: Monoid w => Eff (WriterDef w ': xs) a -> Eff xs w Source #

execWriterDef specialised for the MonadWriter instance.

type MaybeDef = "Either" >: EitherEff () Source #

runMaybeDef :: Eff (MaybeDef ': xs) a -> Eff xs (Maybe a) Source #

Similar to runMaybeT, but on Eff

type EitherDef e = "Either" >: EitherEff e Source #

runEitherDef :: Eff (EitherDef e ': xs) a -> Eff xs (Either e a) Source #

Similar to runExceptT, but on Eff

Orphan instances

Associate (* -> *) Symbol "Either" (Const * e) xs => MonadError e (Eff Symbol xs) Source # 

Methods

throwError :: e -> Eff Symbol xs a #

catchError :: Eff Symbol xs a -> (e -> Eff Symbol xs a) -> Eff Symbol xs a #

Associate (* -> *) Symbol "Reader" ((:~:) * r) xs => MonadReader r (Eff Symbol xs) Source # 

Methods

ask :: Eff Symbol xs r #

local :: (r -> r) -> Eff Symbol xs a -> Eff Symbol xs a #

reader :: (r -> a) -> Eff Symbol xs a #

Associate (* -> *) Symbol "State" (State s) xs => MonadState s (Eff Symbol xs) Source # 

Methods

get :: Eff Symbol xs s #

put :: s -> Eff Symbol xs () #

state :: (s -> (a, s)) -> Eff Symbol xs a #

(Monoid w, Associate (* -> *) Symbol "Writer" ((,) w) xs) => MonadWriter w (Eff Symbol xs) Source # 

Methods

writer :: (a, w) -> Eff Symbol xs a #

tell :: w -> Eff Symbol xs () #

listen :: Eff Symbol xs a -> Eff Symbol xs (a, w) #

pass :: Eff Symbol xs (a, w -> w) -> Eff Symbol xs a #

Associate (* -> *) Symbol "IO" IO xs => MonadIO (Eff Symbol xs) Source # 

Methods

liftIO :: IO a -> Eff Symbol xs a #

(Monoid e, Associate (* -> *) Symbol "Either" (Const * e) xs) => Alternative (Eff Symbol xs) Source #

A bit dubious

Methods

empty :: Eff Symbol xs a #

(<|>) :: Eff Symbol xs a -> Eff Symbol xs a -> Eff Symbol xs a #

some :: Eff Symbol xs a -> Eff Symbol xs [a] #

many :: Eff Symbol xs a -> Eff Symbol xs [a] #

(Monoid e, Associate (* -> *) Symbol "Either" (Const * e) xs) => MonadPlus (Eff Symbol xs) Source # 

Methods

mzero :: Eff Symbol xs a #

mplus :: Eff Symbol xs a -> Eff Symbol xs a -> Eff Symbol xs a #