úÎ )g%‡3      !"#$%&'()*+,-./0123344Monad 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 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 ,  !"#$%&'()*+,   !"#$%&'()*+,   !"#$%&'()*+556677 88 99 :: ;; <<==>>?? @ABCDEFGHIJK @ABCDEFGHIJK,-./011,-./0,-./01222L !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI J K L M NOPQRSTUVWXYZ[\]^MonadLab-0.0.1MonadLab.CommonTypesMonadLab.MonadLabMonadLab.MLabParserMonadLab.ReductionMonadLab.TypeParserMonadLab.WriterMonadLab.Identity MonadLab.IoMonadLab.IoListMonadLab.ListIo MonadLab.ListMonadLab.State MonadLab.EnvMonadLab.Error MonadLab.Cont MonadLab.RunMonadLab.DeclarationsMonadTransformerLayerNPMNonProperMorphismExpQRunExpQJoinExpQLiftExpQBindExpQ ReturnExpQ MonadTypeCon MonadNameMonad LayerType ContLayerTypeWriterLayerTypeErrorLayerType EnvLayerTypeStateLayerType ListLayerType IoLayerType WriterNameEnvName StateName ErrorNameLayerContTWriterTEnvTStateTErrorTListIo layerType hasLayerType getTypeCon getReturngetBind getLayerNPMs getBaseLiftgetJoinintboolstring compositionarrow errorTRec stateTRecenvTRec writerTReccontTRecmkMonad mlabParserreduceM typeParserwriterT identityMonadioMonad ioListMonad listIoMonad listMonadstateTenvTerrorTcontT createRuncreateMonadDecls createRunDeclcreateResBaseDecls createResDeclcreateReactiveBaseDeclscreateReactiveDeclcreateStepTypeSigcreateStepDeclcreateSignalTypeSigcreateSignalDeclcreateSignullTypeSigcreateSignullDecl