úΙà$      !"#$%&'() Effect e m\ is a proxy for the type checker to be able to work with multiple effects at the same time. *Base m4 is a newtype wrapper around a monadic computation. +PureG is the identity monad and is used when no other base monad is needed. , Layer e m is a monad that adds an effect e to the underlying monad m. F (It is the continuation monad transformer with a friendlier name.) -.A Handler e r m a# is a handler of effects with type e.  The ret@ field provides a function to lift pure values into the effect.  The fin< field provides a function to extract a final value of type r from the effect.  The parameter m( should narmally be left polymorphic, it',s the monad that handles the other effects.  with4 takes a handler and creates a new effect instance.  The EffectG is passed on to a function which can use it to do operations with it. +Unwrap the result of the top-level effect.  operation) takes an effect identifier generated by  9 and a function which takes a continuation as parameter. H The result is auto-lifted so it can be used inside any other effect. base^ takes a computation in the base monad and auto-lifts it so it can be used inside any effect. 7Unwrap the result of a computation using a base monad. /       01234 ! ! ! !"#"#"#"#5      !"#$%&'()*+,--./    01223456 effects-0.2Control.EffectsControl.Effects.ContControl.Effects.EitherControl.Effects.ErrorControl.Effects.NonDetControl.Effects.StateControl.Effects.Writer AutoLiftBaseAutoLiftEffectBasePureLayerHandlerretfinwithrun operationbaserunBaseshiftreset throwEither catchEither throwError catchErrorchoosedfsset alternatives accumulatebfsStategetput=:modifylocalreftellwriterAutoLiftInternalautoliftProxybase' operation'runLayerpreBFSunBFS WrappedAltWrapAlt