HOOG lza *,.1134:;>?DEJJMNQRc ,,56FFKLd#$+.3488:;MNe!!#$'*3478:;>ADEHIMNQTf++g00GGhIIKRi "")+--89@AFFKTkl ""//99HHm0GGn  ,.005AJLo  !+.0057IIKLp*12r  !!#&)*..3CFGIJMPSTs ""%(..0199<?BGJJORt "$$&*,,./2249;;=ACTu225Av w %&)*<=@CIIKTxy++88z|UUsjd+)-f()->AllxAnyW BlockReasonJBool8CCharCClockCDevCDouble3CFloatCInoCIntJCIntMaxCIntPtrCLDoubleaCLLongCLongCModeCOffACPidCPtrdiffCSChariCShort! CSigAtomicCSizeCSsizeICTimeCUCharCUIntCUIntMax?CUIntPtrCULLongCULonggCUShortCWcharChanCharComplex ConsoleEvent~Constru ConstrReplDataRepcDataType]DoubleDDynamic+E12E6 EitherErrno ExceptionFdFixityFloatxGeneralCategoryVHashDataMIOIOErrorId Identity Inserts Int Int16 Int32 Int64k Int8R IntPtr Integer Lexeme ListT Maybe NestedAtomicallyu NoMethodError\ NonTerminationC Ordering3 P" PatternMatchFail QSem QSemN ReadP ReadPrec RecConError RecSelError RecUpdErrorx STM_ StableNameT StringM TVarB ThreadId, ThreadStatus Timeout Unique Version Word Word16 Word32 Word64| Word8c WordPtr ZipList [::] []  TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorableEqOrdShowReadTypeableOrdEqTypeableShow ExceptionEqShowOrdEqShowEqOrdTypeable Typeable1Error Typeable1 Typeable1FunctorMonadTypeableShow ExceptionTypeableShow ExceptionTypeableShow ExceptionFunctorMonad MonadPlusFunctorMonad MonadPlusTypeableTypeableTypeableShow ExceptionMonad MonadPlusMonoidDataIxTypeableShow ExceptionTypeableShow ExceptionTypeableShow Exception TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonad MonadTransShowEq PrintfArgDataBitsIx ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorableBitsIxEqFunctorMonadMonadFixFunctor Applicative MonadErrorError MonadPlus MonadErrorMonadIO ApplicativeMonadFixShowEqIxBoundedShowReadEnumOrdEq PrintfArgDataStorableShowEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqTypeable ExceptionShowEqEq Typeable2 HasResolution HasResolution ExceptionTypeableShow PrintfArgDataStorableShowShowEqShowEqShowEqReadShowEnumOrdEqTypeable Typeable1 PrintfArgIsCharDataStorableIx Typeable1 ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqDataStorableIxShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqArrow ArrowChoice ArrowApply ArrowLoopCategoryMonoidDataEqOrdIx ByteCount#CString CStringLenCWString CWStringLen ClockTickConIndexDeviceID EpochTimeFileIDFileMode FileOffsetFilePathFinalizerEnvPtrY FinalizerPtr6IOError(IPrLimitMicroPicoPrecProcessGroupID ProcessIDRationalReadS SampleVar{ShowS`StringS[]Char[]Char[]CharaMVar(,)IntMVaraa[]Char[](,)a[]CharRatioIntegerCPidCPidIntFixedE12FixedE6CLong(,)IntInt IOExceptionaFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoCTimeCDevIntCClock(,)PtrCWcharIntPtrCWchar(,)PtrCCharIntPtrCCharCSize(d[kda^bZcPd[MeJf FgEhCif?jF?k ?l@<m7n 5oX2p.q.rb*s@%tC!uvQwz||iplistZipList#Ge+oora}it#e*m\r6WritertKWriterTocdjeqIOModepaAmpedamonad WrappedMonadrrow WrappedArrowon!a(d/ WrappedMonadrHrOoVw] WrappedArrowrvd}Word#1368ptrWordPtrWord84Word642Word326 Word16Word#a2k9WeakWordeXr_sfimotn{Versionnn pserinterruptAsyncExceptionp e r c a! s( e/ l6 e= tD tK eR rY GeneralCategoryd iz q u e Uniquee f r f l o w ArithExceptioni n e d e!l !e!m!e!!n(!t/!ArrayExceptionh|#i #r"v"y^!ck"pj!eq!a!r}!e!p!TypeRepb!l!e!Typeable1X"2E"32"4"5 "6!7! Typeable7 Typeable6 Typeable5 Typeable4 Typeable3 Typeable2 Typeable1or"ny"TyCona"r"TVar#"TVar#a"v"e"r"s"a"b"l"e" Traversablet#l#e!#c(#a/#s6#e=#lD#eK#tR#tY#e`#rg#GeneralCategoryr#e#a#d#b%d$f$ii$k2$r#s#t#a#t#u#s# ThreadStatusu#n$n $i$n$g $ ThreadStatusi9$l@$lG$eN$dU$AsyncExceptiondp$ThreadId#$ ThreadId#i$n$i$s$h$e$d$ ThreadStatusi$e$d$ ThreadStatusl %o%c%k %e'%d.% ThreadStatusa*e)h;)o(p*(t%u%yj%mq%bx%o%l%Lexemem%r%r%o%g%a%t%e%GeneralCategorySumSTa&m&o&r &e&i&n&g$&StringcY&r>&eE&pL&DataRepo`&ng&sn&tu&r|& ConstrRepf&p&STRepSTRefr&a&b&l&e&StorableSTMb'cs'rM't 'e'State#='t-'StateTState#rT'a['yb'STArraykz'o'v'e'r'f'l'o'w'AsyncExceptionl'e'n(p't'r' StablePtra(m(e( StableNamea1(c8(e(iD(nK(gR(cY(o`(mg(bn(iu(n|(i(n(g(m(a(r(k(GeneralCategoryGeneralCategorym(e(e(x(c(e)p)t)i)o)n$) SomeExceptiono|)uG)tN)dU)o\)wc)nj) ConsoleEventw)Shows)ShowSe)k)f)m)o)d)e)SeekModer)o)m)e*n *d*SeekModem%*p,*l3*e:*vA*aH*rO* SampleVarap.e*i*wx*s*RWSt*RWSTg*h*t*Eithera,c+l+q/+t*u*r*n*i*n*o+r +d+e+r!+ArgOrdera+u;+iB+rI+eP+oW+r^+de+el+rs+ArgOrderr+g+ArgDescra+t+i+v+e+s+e+e+k+SeekModec,sA,u+p,d ,e,r,r,o%,r,, RecUpdErroreH,lO,eV,r],rd,ok,rr, RecSelErroro,n,e,r,r,o,r, RecConErrordt-l,Realf -w,o,r,l-d - RealWorldlL-r,-a3-c:-RealFracoS-aZ-ta- RealFloatReadeC.m".p-s-w-r-i-t-e-m-o-d-e-IOModeReadSReadPr.e .c.ReadPreco).d0.e7.IOModerJ.Readert_.ReaderTtw.Lexemei.o.Ration.a.l.Rationals.e.m.QSemn.QSemNaY1e(1i 1o0rM/t9/u/n&/c-/Lexemer@/Ptre0i 0o^/c/dj/uq/cx/t/Producte/s/s/g/i/d/ ProcessIDr/o/u/p/i/d/ProcessGroupIDnX0v0a 0t'0e.0u50s<0eC0GeneralCategoryt_0ff0a0tr0yy0p0e0 PrintfTyper0g0 PrintfArgc0f0i0x0FixityPreco0l0Poolc1o1Picor/1m61u=1tD1eK1ArgOrderr1te1tl1es1rz1n1m1a1t1c1h1f1a1i1l1PatternMatchFaila1g1r1a1p1h2s 2e2p2a 2r'2a.2t52o<2rC2GeneralCategoryp!4r3t2vn2eu2r|2f2l2o2w2ArithExceptionh2e2r2l3nj3p3s2y2m2b2o2l2GeneralCategoryu3n3c$3t+3u23a93t@3iG3oN3nU3GeneralCategoryuq3mx3b3e3r3GeneralCategorye3t3t3e3r3GeneralCategoryd3Orde3r3i4n4g4Orderinge4t-4a4dZ4i>4oE4nL4OptDescrea4sh4co4rv4OptDescrr4g4ArgDescrn4p4u4n4c4t4u4a4t4i4o4n4GeneralCategoryee7o25u5m%5NumaI7b7m6n5r5tR5a~5h^5ie5nl5gs5Maybes5s5i5g5n5e5d5GeneralCategorye5p5DataRepsI6t5e5r5m6i6n6a6t6i#6o*6n16NonTerminationpP6aW6c^6ie6nl6gs6mz6a6r6k6GeneralCategorye6t6h6o6d6e6r6r6o6r6 NoMethodErroru7f7f7e7r$7i+7n27g97 BufferModerP7gW7ArgDescrsl7ts7ez7d7a7t7o7m7i7c7a7l7l7y7NestedAtomicallya;i;o8u,8v7a8r 8MVar#8MVar#t38a:8bA8lH8eO8a8b[8yb8ti8ep8aw8r~8r8a8y8#8MutableByteArray#r8r8a8y8#8 MutableArray#d;n8a%9o9i9d9Monoidd,9Monad c:e:f:i~:pV:r:s9t9wh9ro9iv9t}9e9r9 MonadWriterr9a9n9s9 MonadTranst9a9t9e9 MonadStatee%:w :s:MonadRWSa,:d3:e::rA: MonadReaderl]:ud:sk: MonadPluso:MonadIOi:x:MonadFixr:r:o:r: MonadErroro:n:t: MonadConti;f;i#;e*;r1;lu;s=;yD;mK;bR;oY;l`;GeneralCategorye|;t;t;e;r;GeneralCategoryc;r;o;Microt;y;b;e;Maybeh<s<y<m<b<o$<l+<GeneralCategorya>eR>i_=oV<g8=s<wg<en<ru<c|<a<s<e<l<e<t<t<e<r<GeneralCategorys<o<f<p<r<e<c=i=s=i=o=n$=ArithExceptiono?=fF=fM= ConsoleEventm5>n=sp=tw=t~=ListTe=b=s=e=p=a=r=a=t=o=r=GeneralCategoryu=f=f>e >r>i>n>g%> BufferModei<>tC>Limitf>t>xc>ej>mq>ex>Lexemet>e>r>n>u>m>b>e>r>GeneralCategoryt>Eithers>t>Lastl?e?i ?s'?l.?i5?KleisliuM?sT?t[?MaybedCgVCnAo@p?s?x?Ixc?s?t?r?i?n?g?IsStringh?a?r?IsCharr@IPrIOen@mI@r,@e3@f:@IORefoP@dW@e^@IOModer@xz@c@e@p@t@i@o@n@ IOExceptionr@o@r@IOErrort@y@p@eA IOErrorTypedBfBiyBt+AInt #kB1UB3?B6)B8BcAeApAreAelApsADataReptArAIntPtrgAeArAaAlAIntegralrAIntegeroAnAsAtBr B ConstrRepInt840BInt642FBInt326\BInt16Int#tBiBaBlBqBuBoBtBeBGeneralCategoryiBxBFixityeBxBoBuCt CoCfCbCo&Cu-Cn4Cd;CsBCArrayExceptionn]CodCrkCerCHandlereCnCtCLexemeiCtCyCIdentityaDe*DpCrCiCnCtCfCtDyDpDeD HPrintfTypea1Dp8Do?DvFDeMDrTDf[DlbDoiDwpDAsyncExceptionn(EsDhDrDeDsDoDlDuDtDiDoDnD HasResolutiontDaEbElEeE HashTabled/El6Ee=EHandlephErWEHandlerooEsvEn}E HandlePosneEnEeErEaElEcEaEtEeEgEoErEyEGeneralCategorydJiHl}GoFrFu,Fn3Fc]Fp?FtFFrMFFunPtrtdFokFrrFFunctoraFcFtFiFoFnFaFlF FractionallHGrFe GmFaFtFGeneralCategoryiGgGnGp&Gt-Gr4G ForeignPtrdOGaVGb]GldGekGFoldableoGaGtGcGiGrGeGpGDataRepnGgGFloatingoGnGsGtGrH ConstrReplOInHrfHx&HePHi2Ht9Hy@HFixitydWHFixedsmHttHFirstaHlHiHqHuHoHtHeHGeneralCategoryzHeHrHeIpHtHrH FinalizerPtrnIv!Ip(It/Ir6IFinalizerEnvPtreVIiImIoIplIasItzIhIFilePathfIfIsIeItI FileOffsetoIdIeIFileModedIFileIDFd 1GM6;MiMnyLofLp"LqLrKxCJcJKiOJtVJc#KeJfJslJusJczJcJeJsJsJExitCodeaJiJlJuJrJeJExitCodexJcJeJpJtJiKo KnK Exceptiono*Kd1Ke8KExitCodeeQKpXKt_KifKomKntK Exception ExceptionrKnLoKrKErrorcKtKErrorTaKlKlK ErrorCalloLErrnoEqo)Lc0Lh7Lt>LiELmLLeSL EpochTimefmLLexemecLdLuLmLEnumoLEndolLoLsLiLnLgLmLaLrLkLGeneralCategorytMhMe$Mr+MEitherE62NME12aOeNi]NoNuMy{MnMaMeMxMcMeMpMtMiMoMnM ExceptionmMiMcMDynamicaNl NDualu8Nw#Nn*NDownb?NlFNeMNDoublevdNikNdrNeyNbNyNzNeNrNoNArithExceptionaOcgOf>OnOvNiNcNeNiNdNDeviceIDoOrOmOa#Ol*OArithExceptionaEOuLOlSOtZOHandlerinOmuOa|OlOnOuOmObOeOrOGeneralCategorydOlOoOcOkODeadlockshPtPa PDatarIPt"Py)Pp0Pe7PDataTypeePPpWPDataRephoPpvPu}PnPcPtPuPaPtPiPoPnPGeneralCategoryaOZcZdYfCYhYiXjiXl(WmWoTpTsVSt2SuQwQcQs*Qt1Qr8Qi?QnFQgMQCWStringldQekQnrQ CWStringLenhQaQrQCWcharc SiRlVRrQsQhQoQrQtQCUShortrQeRn RcRyRsRy%Rm,Rb3Ro:RlARGeneralCategorylRobRniRgpRCULongoRnRgRCULLongnRtRCUIntmRpRtRrRCUIntPtraRxRCUIntMaxhSaSr"SCUChari9Sm@SeGSCTimecoThJTiSsStqSrxSiSnSgSCStringlSeSnS CStringLeniSzSeSCSsizeg TzSeSCSizeaTtTo!Tm(Ti/Tc6T CSigAtomicoQTrXTt_TCShorthvTa}TrTCSChariTtTrTdTiTfTfTCPtrdiffdTCPidfVmVnTiVnVsrUtUContr8Ut)UContTo?UlFUGeneralCategoryc`U ConsoleEventoUt~UConstrUConstrrUeUpU ConstrReplUeUeUvUeUnUtU ConsoleEventeVcVt$Vo+Vr2Vp9Vu@VnGVcNVtUVu\VacVtjViqVoxVnVGeneralCategorynVdVeVxVConIndexpVlVeVxVComplexfVCOffo WdWeWCModed4XlXo9WcWnWsJWeQW ConsoleEventphWuoWnvWc}WtWuWaWtWiWoWnWGeneralCategorygWCLongkWtWiWcWkW ClockTickoXnXg$XCLLongo;XuBXbIXlPXeWXCLDoublempXpwXb~XuXfXCJmpBufnXoYtXCIntmXpXtXrXCIntPtraXxXCIntMaxCInoaYn5Yr'YCharChaniYlqYpTYo[YsbYCFposoxYaYtYCFloatlYeYCFileeYoYuYbYlYeYCDoublevYCDevh2Zl ZoZcZk"ZCClocka9Zr@ZCChartVZcZebZgiZopZrwZy~ZCategoryhZHandleri^l[o{[rT[u[yZtZeZcZoZuZnZtZ ByteCountf[f[e[r$[m+[o2[d9[e@[ BufferModee[[ab[ki[ ConsoleEvento[u[n[d[e[d[Boundedl[Boolo[c[k[bw^e'\r[e[a[s\o \n\ BlockReasond.\i ^o:\nA\b]dx]e/]f\m\o\sf\tm\mt\ BlockReasont\h\e\r\ BlockReasonv\a\r\ BlockReasono\r\e\i\g\n]c ]a]l]l] BlockReasonx6]c=]eD]pK]tR]iY]o`]ng] BlockReasone]a]d]m]v]a]r]BlockedOnDeadMVarl]a]c]k]h]o]l]e] BlockReasonn^d^e"^f)^i0^n7^i>^tE^eL^lS^yZ^BlockedIndefinitelyu~^f^f^e^r^i^n^g^ BufferModet^s^Bitsbddcl/cncpbr_s_sq_y _n_c_e!_x(_c/_e6_p=_tD_iK_oR_nY_AsyncExceptionex_r_t_i_o_n_f_a_i_l_e_d_AssertionFailedg$biar_a?ao_w`Arrowaac`l`m`pW`z/`e6`r=`oD` ArrowZerol^`ue`sl` ArrowPluso`n`a`d` ArrowMonado`o`p` ArrowLooph`o`i`c`e` ArrowChoicepapal$ay+a ArrowApplyyFaArray#ae_axfacmaetap{ataiaoanaArrayExceptionArray#tahaeaxacaeapataiaobn bArithExceptiond^bo0br7bd>beEbrLbArgOrdereebslbcsbrzbArgDescrpbeblbibcbabtbibvbeb ApplicativenbdbmbocdcecIOModey"cAnygclct@ceGcrNcnUca\ctccijcvqcexc AlternativeAllccrcecpcDataRepocncsctcrc ConstrRepdcrd#dAddr#sdo%dl,du3dt:deAdsHdeOdeVdk]dSeekMode:d]wd[]:d]d[::])d()d jiiig?fee6earswamswrRWST9amswr'RWST=bnsw'rRWST-aswrRWS8aswr'RWS<bsw'rRWS* ameErrorTamrContTG1amrReaderT3amr'ReaderT;amsStateTB?amwWriterTbmrContTIbne'ErrorT.bnsStateT+bnwReaderT0bnw'WriterT,wsa(,,) amListT amt"arContH6arReader4ar'Reader:asStateA>awWriterbnListT/brContJbrReader2bsState(bw'Writer)sa(,)wa(,) ws(,) ()mC'&aIdentity$am FE@75%#rmsmwmwsa(,,)maeEithermba(,)mDsa(,)mwa(,)m! ws(,)ma[]m jsss s>rIq qpooYo)onnntn:n!ngmDmmlllllrarbJrraHrmarmbIambmaFrmrmaGwsa(,,)sr8sr(,)sr'=<wsa(,,)msr9 ar54as@ba2bwDrarr76rr';:ssCBAwwEsa(,)s>ame#amr3rmasa(,)ms?w'sb(,,)wsa(,,)*sb(,)sa(,)(w'b(,)wa(,))bnam0rmrm1 w'sb(,,)nwsa(,,)m-be'EithernaeEitherm.sb(,)nsa(,)m+w'b(,)nwa(,)m,b[]na[]m/a$e%r    s &    w'amswrRWST=- aswrRWS<* ameErrorT.amrContTI1amrReaderT;amsStateTB+amwReaderT0amwWriterT,amListT/ arContJ6arReader:2asStateA(awWriter)wa(,)Char[]aIOaIdentityamED7#"!wwa(,)maeEithermwa(,)ma[]m Jz}zjz[zPzEz:z%zzzzyyyyyyyyqybySycontt7ContTcontPContclassmClasscensorcensor= catcherror catchError<callccЅcallCC;asksasks:askask9L& 2@}l.},cN B@ pJV|so>\Y^WRMPIMQ۽N C{U-u. kéޤX#d΢FѠ "4BؕNz*O*rԈ{|class (Monoid w, Monad m) => | (MonadWriter w m) (m -> w)Ј|class  Monad m => | (MonadState s m) (m -> s)oget returns the state from the internals of the monad. put replaces the state inside the monad. |class  Monad m => | (MonadReader r m) (m -> r)؉See examples in Control.Monad.Reader. Note, the partially applied function type (->) r is a simple reader monad. See the instance declaration below. |class @(Monoid w, MonadReader r m, MonadWriter w m, MonadState s m) => | (MonadRWS r w s m) (m -> r) |class  Monad m => | (MonadError e m) (m -> e)XThe strategy of combining computations that can throw exceptions by bypassing bound functions from the point an exception is thrown to the point that it is handled. Is parameterized over the type of error information and the monad type constructor. It is common to use Data.Either String as the monad type constructor for an error monad in which error descriptions take the form of strings. In that case and many other common cases the resulting monad is already defined as an instance of the MonadError class. You can also define your own error type and/or use a monad type constructor other than Data.Either String or Data.Either IOError. In these cases you will have to explicitly define instances of the Error and/or MonadError classes. WriterTWriterT :: m (a, w) ->  WriterT w m aŽm(,)awWriterTwmaWriterTnewtype WriterT w m a&WriterTWriterT :: m (a, w) ->  WriterT w m azm(,)awWriterTwmaWriterTnewtype WriterT w m aޏWriterWriter :: (a, w) ->  Writer w aK+(,)awWriterwaWriternewtype Writer w aWriterWriter :: (a, w) ->  Writer w aϐ(,)awWriterwaWriternewtype Writer w a& withStateT withStateT :: (s -> s) ->  StateT s m a ->  StateT s m aȑssStateTsmaStateTsmaSimilar to withState  withStateT withStateT :: (s -> s) ->  StateT s m a ->  StateT s m aUssStateTsmaStateTsmaSimilar to withState  withState withState :: (s -> s) ->  State s a ->  State s a4 ssStatesaStatesaBApply this function to this state and return the resulting state.  withState withState :: (s -> s) ->  State s a ->  State s aߓssStatesaStatesaBApply this function to this state and return the resulting state.  withRWSTwithRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m aǔr's(,)rsRWSTrwsmaRWSTr'wsma withRWSTwithRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m aԕr's(,)rsRWSTrwsmaRWSTr'wsma withRWSwithRWS :: (r' -> s -> (r, s)) ->  RWS r w s a ->  RWS r' w s aIr's(,)rsRWSrwsaRWSr'wsa withRWSwithRWS :: (r' -> s -> (r, s)) ->  RWS r w s a ->  RWS r' w s a>r's(,)rsRWSrwsaRWSr'wsa throwError throwError :: MonadError e m => e -> m a MonadErroremematelltell :: MonadWriter w m => w -> m ()0  MonadWriterwmwm()strMsgstrMsg ::  Error a => String -> aErroraStringaStateTStateT :: (s -> m (a, s)) ->  StateT s m asm(,)asStateTsmaStateTnewtype StateT s m aWA parameterizable state monad for encapsulating an inner monad. The StateT Monad structure is parameterized over two things: Here are some examples of use: (Parser from ParseLib with Hugs)
type Parser a = StateT String [] a
   ==> StateT (String -> [(a,String)])
For example, item can be written as:
item = do (x:xs) <- get
       put xs
       return x

type BoringState s a = StateT s Indentity a
     ==> StateT (s -> Identity (a,s))

type StateWithIO s a = StateT s IO a
     ==> StateT (s -> IO (a,s))

type StateWithErr s a = StateT s Maybe a
     ==> StateT (s -> Maybe (a,s))
StateTStateT :: (s -> m (a, s)) ->  StateT s m atsm(,)asStateTsmaStateTnewtype StateT s m aڜA parameterizable state monad for encapsulating an inner monad. The StateT Monad structure is parameterized over two things: Here are some examples of use: (Parser from ParseLib with Hugs)
type Parser a = StateT String [] a
   ==> StateT (String -> [(a,String)])
For example, item can be written as:
item = do (x:xs) <- get
       put xs
       return x

type BoringState s a = StateT s Indentity a
     ==> StateT (s -> Identity (a,s))

type StateWithIO s a = StateT s IO a
     ==> StateT (s -> IO (a,s))

type StateWithErr s a = StateT s Maybe a
     ==> StateT (s -> Maybe (a,s))
StateState ::  (s -> (a, s)) ->  State s as(,)asStatesaStatenewtype State s aIA parameterizable state monad where s is the type of the state to carry and a is the type of the return value. StateState ::  (s -> (a, s)) ->  State s aBs(,)asStatesaStatenewtype State s awA parameterizable state monad where s is the type of the state to carry and a is the type of the return value.  RWSTRWST :: (r -> s -> m (a, s, w)) -> RWST r w s m aYrsm(,,)aswRWSTrwsma RWSTnewtype RWST r w s m aʢ RWSTRWST :: (r -> s -> m (a, s, w)) -> RWST r w s m a`(rsm(,,)aswRWSTrwsma RWSTnewtype RWST r w s m a RWSRWS :: (r -> s -> (a, s, w)) ->  RWS r w s ars(,,)aswRWSrwsa RWSnewtype RWS r w s aT RWSRWS :: (r -> s -> (a, s, w)) ->  RWS r w s aڤrs(,,)aswRWSrwsa RWSnewtype RWS r w s a runWriterT runWriterT ::  WriterT w m a -> m (a, w)iWriterTwmam(,)aw runWriterT runWriterT ::  WriterT w m a -> m (a, w)WriterTwmam(,)aw runWriter runWriter ::  Writer w a -> (a, w)hWriterwa(,)aw runWriter runWriter ::  Writer w a -> (a, w)ۦWriterwa(,)aw runStateT runStateT ::  StateT s m a -> s -> m (a, s)_StateTsmasm(,)as runStateT runStateT ::  StateT s m a -> s -> m (a, s)StateTsmasm(,)asrunStaterunState ::  State s a -> s -> (a, s)vStatesas(,)asrunStaterunState ::  State s a -> s -> (a, s)Statesas(,)as runRWST runRWST :: RWST r w s m a -> r -> s ->  m (a, s, w)RWSTrwsmarsm(,,)asw runRWST runRWST :: RWST r w s m a -> r -> s ->  m (a, s, w)g1RWSTrwsmarsm(,,)asw runRWS runRWS ::  RWS r w s a -> r -> s ->  (a, s, w)ҪRWSrwsars(,,)asw runRWS runRWS ::  RWS r w s a -> r -> s ->  (a, s, w)jRWSrwsars(,,)aswputput :: MonadState s m => s -> m () MonadStatesmsm()passpass :: MonadWriter w m =>  m (a, w -> w) -> m ad MonadWriterwmm(,)awwmanoMsgnoMsg ::  Error a => a֬Erroraa MonadContclass  Monad m =>  MonadCont m*modifymodify :: MonadState s m => (s -> s) -> m () MonadStatesmssm()`Monadic state transformer. Maps an old state to a new state inside a state monad. The old state is thrown away.
Main> :t modify ((+1) :: Int -> Int)
modify (...) :: (MonadState Int a) => a ()
This says that modify (+1) acts over any Monad that is a member of the MonadState class, with an Int state.  mapWriterT mapWriterT :: (m (a, w) -> n (b, w')) ->  WriterT w m a -> WriterT w' n bm(,)awn(,)bw'WriterTwmaWriterTw'nb mapWriterT mapWriterT :: (m (a, w) -> n (b, w')) ->  WriterT w m a -> WriterT w' n bfm(,)awn(,)bw'WriterTwmaWriterTw'nb mapWriter mapWriter :: ((a, w) -> (b, w')) ->  Writer w a ->  Writer w' bq0(,)aw(,)bw'WriterwaWriterw'b mapWriter mapWriter :: ((a, w) -> (b, w')) ->  Writer w a ->  Writer w' b)(,)aw(,)bw'WriterwaWriterw'b mapStateT mapStateT :: (m (a, s) -> n (b, s)) ->  StateT s m a ->  StateT s n bm(,)asn(,)bsStateTsmaStateTsnbSimilar to mapState  mapStateT mapStateT :: (m (a, s) -> n (b, s)) ->  StateT s m a ->  StateT s n bܳm(,)asn(,)bsStateTsmaStateTsnbSimilar to mapState mapStatemapState :: ((a, s) -> (b, s)) ->  State s a ->  State s bh(,)as(,)bsStatesaStatesbMap a stateful computation from one (return value, state) pair to another. For instance, to convert numberTree from a function that returns a tree to a function that returns the sum of the numbered tree (see the Examples section for numberTree and sumTree) you may write:
sumNumberedTree :: (Eq a) => Tree a -> State (Table a) Int
sumNumberedTree = mapState (\ (t, tab) -> (sumTree t, tab))  . numberTree
mapStatemapState :: ((a, s) -> (b, s)) ->  State s a ->  State s b¶(,)as(,)bsStatesaStatesbMap a stateful computation from one (return value, state) pair to another. For instance, to convert numberTree from a function that returns a tree to a function that returns the sum of the numbered tree (see the Examples section for numberTree and sumTree) you may write:
sumNumberedTree :: (Eq a) => Tree a -> State (Table a) Int
sumNumberedTree = mapState (\ (t, tab) -> (sumTree t, tab))  . numberTree
 mapRWSTmapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n b0m(,,)aswn(,,)bsw'RWSTrwsmaRWSTrw'snb mapRWSTmapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n bwm(,,)aswn(,,)bsw'RWSTrwsmaRWSTrw'snb mapRWSmapRWS :: ((a, s, w) -> (b, s, w')) ->  RWS r w s a ->  RWS r w' s b?(,,)asw(,,)bsw'RWSrwsaRWSrw'sb mapRWSmapRWS :: ((a, s, w) -> (b, s, w')) ->  RWS r w s a ->  RWS r w' s b(,,)asw(,,)bsw'RWSrwsaRWSrw'sblocallocal :: MonadReader r m => (r -> r) -> m a -> m ao MonadReaderrmrrmamalistenslistens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)J MonadWriterwmwbmam(,)ablistenlisten :: MonadWriter w m => m a -> m (a, w)׽ MonadWriterwmmam(,)awgetsgets :: MonadState s m => (s -> a) -> m aT- MonadStatesmsamaLGets specific component of the state, using a projection function supplied. getget :: MonadState s m => m s MonadStatesmms execWriterT execWriterT ::  Monad m =>  WriterT w m a -> m w_MonadmWriterTwmamw execWriterT execWriterT ::  Monad m =>  WriterT w m a -> m wMonadmWriterTwmamw execWriter execWriter ::  Writer w a -> w}gWriterwaw execWriter execWriter ::  Writer w a -> wWriterwaw execStateT execStateT ::  Monad m =>  StateT s m a -> s -> m s|OMonadmStateTsmasmsSimilar to execState  execStateT execStateT ::  Monad m =>  StateT s m a -> s -> m s1MonadmStateTsmasmsSimilar to execState  execState execState ::  State s a -> s -> sStatesassExecute this state and return the new state, throwing away the return value. Very much like snd composed with runstate.  execState execState ::  State s a -> s -> sStatesassExecute this state and return the new state, throwing away the return value. Very much like snd composed with runstate.  execRWST execRWST ::  Monad m => RWST r w s m a -> r -> s -> m (s, w)MonadmRWSTrwsmarsm(,)sw execRWST execRWST ::  Monad m => RWST r w s m a -> r -> s -> m (s, w){MonadmRWSTrwsmarsm(,)sw execRWS execRWS ::  RWS r w s a -> r -> s -> (s, w)L#RWSrwsars(,)sw execRWS execRWS ::  RWS r w s a -> r -> s -> (s, w)RWSrwsars(,)sw evalStateT evalStateT ::  Monad m =>  StateT s m a -> s -> m axKMonadmStateTsmasmaSimilar to evalState  evalStateT evalStateT ::  Monad m =>  StateT s m a -> s -> m a-MonadmStateTsmasmaSimilar to evalState  evalState evalState ::  State s a -> s -> aStatesasaEvaluate this state monad with the given initial state,throwing away the final state. Very much like fst composed with runstate.  evalState evalState ::  State s a -> s -> aStatesasaEvaluate this state monad with the given initial state,throwing away the final state. Very much like fst composed with runstate.  evalRWST evalRWST ::  Monad m => RWST r w s m a -> r -> s -> m (a, w) MonadmRWSTrwsmarsm(,)aw evalRWST evalRWST ::  Monad m => RWST r w s m a -> r -> s -> m (a, w)MonadmRWSTrwsmarsm(,)aw evalRWS evalRWS ::  RWS r w s a -> r -> s -> (a, w)Z1RWSrwsars(,)aw evalRWS evalRWS ::  RWS r w s a -> r -> s -> (a, w)RWSrwsars(,)awErrorclass Error abAn exception to be thrown. An instance must redefine at least one of noMsg, strMsg. censorcensor :: MonadWriter w m => (w -> w) -> m a -> m a MonadWriterwmwwmama catchError catchError :: MonadError e m => m a ->  (e -> m a) -> m a MonadErroremmaemamacallCCcallCC :: MonadCont m => ((a -> m b) -> m a) -> m aU# MonadContmambmamaasksasks :: MonadReader r m => (r -> a) -> m a MonadReaderrmramaRetrieves a function of the current environment. Parameters: See an example in Control.Monad.Reader. askask :: MonadReader r m => m r MonadReaderrmmr withReaderT withReaderT ::  (r' -> r) ->  ReaderT r m a -> ReaderT r' m a_r'rReaderTrmaReaderTr'ma withReader withReader ::  (r' -> r) ->  Reader r a ->  Reader r' a0r'rReaderraReaderr'a(A more general version of local.  withContT withContT :: ((b -> m r) -> a -> m r) ->  ContT r m a ->  ContT r m bbmramrContTrmaContTrmbwithContwithCont :: ((b -> r) -> a -> r) -> Cont r a -> Cont r bbrarContraContrb runReaderT runReaderT ::  ReaderT r m a -> r -> m a:ReaderTrmarma runReader runReader ::  Reader r a -> r -> aReaderraraRuns Reader and extracts the final value from it. To extract the value apply (runReader reader) to an environment value. Parameters:  runListTrunListT ::  ListT m a -> m [a]ListTmam[]a runIdentity runIdentity ::  Identity a -> akVIdentityaa runErrorT runErrorT ::  ErrorT e m a -> m (Either e a)ErrorTemamEitherearunContTrunContT ::  ContT r m a ->  (a -> m r) -> m rXContTrmaamrmrrunContrunCont :: Cont r a -> (a -> r) -> rContraarrRuns a CPS computation, returns its result after applying the final continuation to it. Parameters:  ReaderTReaderT ::  (r -> m a) ->  ReaderT r m aoKrmaReaderTrma ReaderTnewtype ReaderT r m adThe reader monad transformer. Can be used to add environment reading functionality to other monads.  ReaderReader :: (r -> a) ->  Reader r ax]raReaderra Readernewtype Reader r ahThe parameterizable reader monad. The return function creates a Reader that ignores the environment, and produces the given value. The binding operator >>= produces a Reader that uses the environment to extract the value its left-hand side, and then applies the bound function to that value in the same environment.  MonadTransclass  MonadTrans tRMonadIOclass  Monad m => MonadIO m mapReaderT mapReaderT ::  (m a -> n b) ->  ReaderT w m a ->  ReaderT w n bF manbReaderTwmaReaderTwnb mapReader mapReader :: (a -> b) ->  Reader r a ->  Reader r babReaderraReaderrb mapListTmapListT :: (m [a] -> n [b]) ->  ListT m a ->  ListT n bKm[]an[]bListTmaListTnb mapErrorT mapErrorT :: #(m (Either e a) -> n (Either e' b)) ->  ErrorT e m a ->  ErrorT e' n blmEithereanEithere'bErrorTemaErrorTe'nbmapContTmapContT ::  (m r -> m r) ->  ContT r m a ->  ContT r m amrmrContTrmaContTrmamapContmapCont :: (r -> r) -> Cont r a -> Cont r awrrContraContra ListTListT :: m [a] ->  ListT m am[]aListTma ListTnewtype ListT m a<liftIOliftIO ::  MonadIO m => IO a -> m aMonadIOmIOamaliftlift :: (MonadTrans t, Monad m) => m a -> t m a>  MonadTranstMonadmmatmaIdentityIdentity :: a ->  Identity aaIdentityaIdentitynewtype Identity a'Identity wrapper. Abstraction for wrapping up a object. If you have an monadic function, say:
example :: Int -> Identity Int
example x = return (x*x)
you can "run" it, using
Main> runIdentity (example 42)
1764 :: Int
A typical use of the Identity monad is to derive a monad from a monad transformer.
-- derive the Control.Monad.State.State monad using the Control.Monad.State.StateT monad transformer
type Control.Monad.State.State s a = Control.Monad.State.StateT s Identity a
The runIdentity label is used in the type definition because it follows a style of monad definition that explicitly represents monad values as computations. In this style, a monadic computation is built up using the monadic operators and then the value of the computation is extracted using the run****** function. Because the Identity monad does not do any computation, its definition is trivial. For a better example of this style of monad, see the Control.Monad.State.State monad. ErrorTErrorT :: m (Either e a) ->  ErrorT e m aVmEithereaErrorTemaErrorTnewtype ErrorT e m aGThe error monad transformer. It can be used to add error handling to other monads. The ErrorT Monad structure is parameterized over two things: Here are some examples of use:
-- wraps IO action that can throw an error e
type ErrorWithIO e a = ErrorT e IO a
==> ErrorT (IO (Either e a))

-- IO monad wrapped in StateT inside of ErrorT
type ErrorAndStateWithIO e s a = ErrorT e (StateT s IO) a
==> ErrorT (StateT s IO (Either e a))
==> ErrorT (StateT (s -> IO (Either e a,s)))
ContTContT :: ((a -> m r) -> m r) ->  ContT r m aZamrmrContTrmaContTnewtype ContT r m a^The continuation monad transformer. Can be used to add continuation handling to other monads. ContCont :: ((a -> r) -> r) -> Cont r akarrContraContnewtype Cont r a`Continuation monad. Cont r a is a CPS computation that produces an intermediate result of type a within a CPS computation whose final result type is r. The return function simply creates a continuation which passes the value on. The >>= operator adds the bound function into the continuation chain. Writermodule Control.Monad.WriterXThe MonadWriter class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. Transmodule Control.Monad.TransThe MonadTrans class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Strictmodule Control.Monad.Writer.StrictStrict writer monads. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. Strictmodule Control.Monad.State.StrictStrict state monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. See below for examples.  Strictmodule Control.Monad.RWS.StrictStrict RWS Monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Statemodule Control.Monad.State(State monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995.  RWSmodule Control.Monad.RWS@Declaration of the MonadRWS class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995.  Readermodule Control.Monad.Readerd The Reader monad (also called the Environment monad). Represents a computation, which can read values from a shared environment, pass values from function to function, and execute sub-computations in a modified environment. Using Reader monad for such computations is often clearer and easier than using the Control.Monad.State.State monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. mtlpackage mtlMonad transformer library A monad transformer library, inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, by Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html), Advanced School of Functional Programming, 1995.  Listmodule Control.Monad.ListThe List monad. Lazymodule Control.Monad.Writer.Lazy;Lazy writer monads. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. Lazymodule Control.Monad.State.LazyhLazy state monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. See below for examples.  Lazymodule Control.Monad.RWS.LazyLazy RWS monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Identitymodule Control.Monad.Identity The Identity monad is a monad that does not embody any computational strategy. It simply applies the bound function to its input without any modification. Computationally, there is no reason to use the Identity monad instead of the much simpler act of simply applying functions to their arguments. The purpose of the Identity monad is its fundamental role in the theory of monad transformers. Any monad transformer applied to the Identity monad yields a non-transformer version of that monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Errormodule Control.Monad.Errorv The Error monad (also called the Exception monad). Contmodule Control.Monad.Contf The Continuation monad represents computations in continuation-passing style (CPS). In continuation-passing style function result is not returned, but instead is passed to another function, received as a parameter (continuation). Computations are built up from sequences of nested continuations, terminated by a final continuation (often id) which produces the final result. Since continuations are functions which represent the future of a computation, manipulation of the continuation functions can achieve complex manipulations of the future of the computation, such as interrupting a computation in the middle, aborting a portion of a computation, restarting a computation, and interleaving execution of computations. The Continuation monad adapts CPS to the structure of a monad. Before using the Continuation monad, be sure that you have a firm understanding of continuation-passing style and that continuations represent the best solution to your particular design problem. Many algorithms which require continuations in other languages do not require them in Haskell, due to Haskell's lazy semantics. Abuse of the Continuation monad can produce code that is impossible to understand and maintain. Classmodule Control.Monad.Writer.Class0 The MonadWriter class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.State.ClassbMonadState class. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.Reader.Class The Reader monad (also called the Environment monad). Represents a computation, which can read values from a shared environment, pass values from function to function, and execute sub-computations in a modified environment. Using Reader monad for such computations is often clearer and easier than using the Control.Monad.State.State monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.RWS.ClassDeclaration of the MonadRWS class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.Error.Class The Error monad (also called the Exception monad). Classmodule Control.Monad.Cont.Class The Continuation monad represents computations in continuation-passing style (CPS). In continuation-passing style function result is not returned, but instead is passed to another function, received as a parameter (continuation). Computations are built up from sequences of nested continuations, terminated by a final continuation (often id) which produces the final result. Since continuations are functions which represent the future of a computation, manipulation of the continuation functions can achieve complex manipulations of the future of the computation, such as interrupting a computation in the middle, aborting a portion of a computation, restarting a computation, and interleaving execution of computations. The Continuation monad adapts CPS to the structure of a monad. Before using the Continuation monad, be sure that you have a firm understanding of continuation-passing style and that continuations represent the best solution to your particular design problem. Many algorithms which require continuations in other languages do not require them in Haskell, due to Haskell's lazy semantics. Abuse of the Continuation monad can produce code that is impossible to understand and maintain.   w [ B *  qWB& ControlMonadContControlMonadWriterStrictControlMonadWriterControlMonadWriterLazyControlMonadStateStrictControlMonadStateControlMonadStateLazyControlMonadReaderControlMonadRWSStrictControlMonadRWSControlMonadRWSLazyControlMonadListControlMonadErrorControlMonadContClassControlMonadErrorClassControlMonadIdentityControlMonadRWSClassControlMonadReaderClassControlMonadStateClassControlMonadTransControlMonadWriterClass mtl1.1.0.2Ahttp://hackage.haskell.org/packages/archive/mtl/1.1.0.2/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mtl