úÎ )n%é5      !"#$%&'()*+,-./012345566Monad transformer data type Data type to hold a layer's non-proper morphisms %Code for a monad non-proper morphism "Code for a monad run (evaluation) Code for a monad join Code for a monad lifting Code for a monad bind Code for a monad return %The monad type constructor type. .The name of monad type constructor identifier 2The monad type. Each component contains abstract 5 syntax of the Haskell code to implement the monad. K Components are (code for the data type, code for the return, code for the F bind, code for the non-proper morphisms, code for the monad lifting) The Layer data type. / A monad is constructed from a list of layers. 3 Each layer adds a corresponding set of non-proper B morphisms (npms) for use in the monad. The non-proper morphisms 4 can be thought of as the interface of the monad or % primitives in the constructed monad "language". The Resumption layer. The Continuation layer.   f no List layer is included in the li , then the corresponding Layer transformers are composed Adds an npm for accessing current continuation to facilate . continuation passing style programming. The Writer layer. " Adds npms for the production/#manipulation of sequenced output. The Environment layer.  Adds npms for reading/&pre-setting an immutable environment. The State layer. 9 Adds npms for the manipulation of a mutable state.  The Error (or Exception) layer. & Adds npms for exception throwing/ handling. The List layer. @ Adds an npm for expressing nondeterministic computation. The Io layer. & Adds an npm for IO operations. #Type constructor accessor $Return accessor %Bind accessor &Layers accessor 'Base monad lifting accessor (Join accessor *Short hand for [t| Int |] , [t| Bool |], and [t| String |] ,=Definition of composition function for use in TH expressions -)Convenience function for expressing type t -> t' in TH .  !"#$%&'()*+,-.   !" #$%&'()*+,-.    !"#$%&'()*+,-778899 :: ;; << == >>??@@AABCBCDD ./01233 ./012./0123444E !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL M N O P QRSTUVWXMonadLab-0.0.2MonadLab.CommonTypesMonadLab.MonadLabMonadLab.MLabParserMonadLab.ReductionMonadLab.TypeParserMonadLab.WriterMonadLab.Identity MonadLab.IoMonadLab.IoListMonadLab.ListIo MonadLab.ListMonadLab.State MonadLab.EnvMonadLab.Error MonadLab.Cont MonadLab.RunMonadLab.Declarations MonadLab.ResMonadTransformerLayerNPMNonProperMorphismExpQRunExpQJoinExpQLiftExpQBindExpQ ReturnExpQ MonadTypeCon MonadNameMonad LayerType ResLayerType ContLayerTypeWriterLayerTypeErrorLayerType EnvLayerTypeStateLayerType ListLayerType IoLayerType WriterNameEnvName StateName ErrorNameLayerResTContTWriterTEnvTStateTErrorTListIo layerType hasLayerType getTypeCon getReturngetBind getLayerNPMs getBaseLiftgetJoinintboolstring compositionarrow errorTRec stateTRecenvTRec writerTReccontTRecmkMonad mlabParserreduceM typeParserwriterT identityMonadioMonad ioListMonad listIoMonad listMonadstateTenvTerrorTcontT createRuncreateMonadDecls createRunDeclcreateResDecls