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

Copyright(c) Fumiaki Kinoshita 2018
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 #

mtl-compatible reader

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

Specialised version of runReaderEff compatible with the MonadReader instance.

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

mtl-compatible state

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

runStateEff specialised for the MonadState instance.

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

evalStateEff specialised for the MonadState instance.

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

execStateEff specialised for the MonadState instance.

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

mtl-compatible writer

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

runWriterDef specialised for the MonadWriter instance.

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

execWriterDef specialised for the MonadWriter instance.

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

Same as EitherDef ()

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

Similar to runMaybeT, but on Eff

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

mtl-compatible either effect

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

Similar to runExceptT, but on Eff

Orphan instances

(Monoid w, Associate "Writer" ((,) w) xs) => MonadWriter w (Eff xs) # 
Instance details

Methods

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

tell :: w -> Eff xs () #

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

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

Associate "State" (State s) xs => MonadState s (Eff xs) # 
Instance details

Methods

get :: Eff xs s #

put :: s -> Eff xs () #

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

Associate "Reader" ((:~:) r) xs => MonadReader r (Eff xs) # 
Instance details

Methods

ask :: Eff xs r #

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

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

Associate "Either" (Const e :: * -> *) xs => MonadError e (Eff xs) # 
Instance details

Methods

throwError :: e -> Eff xs a #

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

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

A bit dubious

Instance details

Methods

empty :: Eff xs a #

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

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

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

(Monoid e, Associate "Either" (Const e :: * -> *) xs) => MonadPlus (Eff xs) # 
Instance details

Methods

mzero :: Eff xs a #

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

(MonadIO m, Associate "IO" m xs) => MonadIO (Eff xs) # 
Instance details

Methods

liftIO :: IO a -> Eff xs a #