mdpi      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh experimental Ertugrul Soeylemez <es@ertes.de>+AMonads with support for logging. Traditionally these are called  *writer monads*.  Log a value. BThe monad transformer class. Lifting computations one level down G the monad stack, or stated differently promoting a computation of the & underlying monad to the transformer. 2Promote a monadic computation to the transformer. Stateful monads. Minimal complete definition: ,  and . State type of m. Get the current state. $Set the current state and force it. Set the current state, but don' t force it. Every monad transformer t that supports transforming t m a to  m a# can be an instance of this class. Arguments needed to run. Run the transformer. 7Monads, which support lifting base monad computations. Base monad of m. "Promote a base monad computation. Monads with exception support. The exception type. Raise an exception. %Run computation catching exceptions. iAMonads supporting *call-with-current-continuation* (aka callCC).  Call with current continuation. Monads supporting abortion. End result of the computation. 'Ignore current continuation and abort. 0Capture the current continuation for later use. Jump to a label. CGet a resource, run a computation, then release the resource, even  if an exception is raised:   bracket acquire release use CPlease note that this function behaves slightly different from the  usual  E.bracket.. If both the user and the releaser throw an / exception, the user exception is significant. DInitialize, then run, then clean up safely, even if an exception is  raised:   bracket_ init cleanup run CPlease note that this function behaves slightly different from the  usual  E.bracket_.. If both the user and the releaser throw an / exception, the user exception is significant. -Catch exceptions using an exception handler. ?Run a final computation regardless of whether an exception was  raised. ;Fail (in the sense of the given transformer), if the given  underlying computation returns j. 2Catch exceptions using an exception handler (flip ). !8Throw given exception, if the given computation returns k. "8Throw given exception, if the given computation returns j. #;Fail (in the sense of the given transformer), if the given  underlying computation returns k. $Handy alias for lifting l computations. %Get a certain field. &'Apply a function to the current state. '"Get a field and modify the state. (1Get a field and modify the state. Lazy version. )6Apply a function to the current state. Lazy version. *  !"#$%&'()* !"# $ %&'()*     !"#$%&'() experimental Ertugrul Soeylemez <es@ertes.de>0*+,>The identity monad. This monad represents values themselves, $ i.e. computations without effects. -./?The choice monad transformer, which models, as the most common B interpretation, nondeterminism. Internally a list of choices is 0 represented as a CPS-based left-fold function. 012>The continuation passing style monad transformer. This monad 0 transformer models the most basic form of CPS. 345DMonad transformer for CPS computations with an additional exception  continuation. 678CThe identity monad transformer. This monad transformer represents D computations themselves without further side effects. Unlike most B other monad transformers in this module it is not implemented in & terms of continuation passing style. 9:;DMonad transformer for CPS computations with an additional exception  continuation with no argument. <*The traditional writer monad transformer. =>?-Monad transformer for stateful computations. @9The writer monad transformer. Supports logging effects. ARun a choice computation. BTurn a list into a ./ computation efficiently. CFind all solutions. D$Find all solutions and ignore them. EFind the first solution. F'Find the first solution and ignore it. G2Turn a list into a computation with alternatives. H#Get list of solutions (faster than C, but returns solutions  in reversed order). IGet one solution (faster than E). JCRun a CPS-style computation given the supplied final continuation. K6Evaluate a CPS-style computation to its final result. L*Transform the final result along the way. MRun an 45 transformer. NRun an 45 transformer returning an m result. OModify the result of an 45 computation along the way. PRun a :; transformer. QRun a :; transformer returning a n result. RModify the result of a :; computation along the way. S&Run a traditional writer transformer. T<Run a traditional writer transformer and return its result. U9Run a traditional writer transformer and return its log. VRun a state transformer. W.Run a state transformer returning its result. X3Run a state transformer returning its final state. YRun a writer transformer. 0*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY0,+*876210JKL/.-ABCDEFGHI543MNO;:9PQR?>=VWX@Y<STU0*+,+*-./.-0121034543678769:;:9<=>?>=@ABCDEFGHIJKLMNOPQRSTUVWXY experimental Ertugrul Soeylemez <es@ertes.de>Z&Pure state monad derived from StateT. [The traditional writer monad. \#Pure CPS monad derived from ContT. ] The choice monad. Derived from ./. ^Get list of solutions. _Get one solution. `Run a pure CPS computation. a5Evaluate a pure CPS computation to its final result. b6Modify the result of a CPS computation along the way. c&Run a traditional writer computation. d<Run a traditional writer computation and return its result. e9Run a traditional writer computation and return its log. fRun a stateful computation. g1Run a stateful computation returning its result. h1Run a stateful computation returning its result. Z[\]^_`abcdefgh]^_\`abZfgh[cdeZ[\]^_`abcdefgh experimental Ertugrul Soeylemez <es@ertes.de> experimental Ertugrul Soeylemez <es@ertes.de>opqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh      !"#$%&'()*+,-./011233455677899:;;<=>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijhikhlmnopqrsrtrurvrwrxyz{|{}{~{{{{{{{{{{{{{{{{{{{{{{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyrrcontstuff-0.7.0Control.ContStuff.ClassesControl.ContStuff.TransControl.ContStuff.MonadsControl.ContStuff.InstancesControl.ContStuffWritabletell TransformerliftStatefulStateOfgetputputLazyRunnableArgumentrunTLiftBaseBasebase HasExceptions ExceptionraisetryLabelCallCCcallCC AbortableResultabortlabelCCgotobracketbracket_catchfinallyforbidhandle raiseUnless raiseWhenrequireiogetFieldmodify modifyFieldmodifyFieldLazy modifyLazygetIdId getChoiceTChoiceTgetContTContT getEitherTEitherTgetIdTIdT getMaybeTMaybeT OldWriterT getStateTStateTWriterT runChoiceTchoicefindAllfindAll_ findFirst findFirst_listA listChoiceT maybeChoiceTrunContT evalContT modifyContT runEitherT evalEitherT modifyEitherT runMaybeT evalMaybeT modifyMaybeT runOldWriterTevalOldWriterTexecOldWriterT runStateT evalStateT execStateT runWriterTState OldWriterContChoice listChoice maybeChoicerunContevalCont modifyCont runOldWriter evalOldWriter execOldWriterrunState evalState execStateghc-primGHC.BoolTrueFalse GHC.TypesIO Data.EitherEither Data.MaybeMaybeGHC.Basefail>>=>>returnMonadFunctor Control.Monad MonadPlusControl.Applicative ApplicativeoptionalliftA3liftA2liftA<**><**><*>puremanysome<|>empty AlternativegetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$>mfilterapliftM5liftM4liftM3liftM2liftMunlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinvoidforever<=<>=>msumforM_forMfilterMguardmapM_mapM sequence_sequence=<<mplusmzero<$fmap