?3      !" # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s tuvwxyz{|}~1;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.edu     ;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.edu     ;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.edu +non-portable (multi-parameter type classes) experimentalMark Snyder, marks@ittc.ku.edu;non-portable (multi-param classes, functional dependencies)Mark Snyder, marks@ittc.ku.edu !< ! ! ! ;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.edu"The reader monad transformer. FCan be used to add environment reading functionality to other monads. #$%&'()*+A more general version of . ,-./C "#$%&'()*+,-./%&'()*+"#$,-./"#$#$%&'&'()*+,-./ ;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.edu0123456789:;<=>?@AE 0123456789:;<=>?@A3456789:;012<=>?@A01212345456789:;<=>?@A;non-portable (multi-param classes, functional dependencies)Mark Snyder, marks@ittc.ku.eduH 0123456789:;<=>?@A ;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.eduBCDEFGHIJKLMNOPQRSE BCDEFGHIJKLMNOPQRSEFGHIJKLMBCDNOPQRSBCDCDEFGFGHIJKLMNOPQRS TUVWXYZ[\]^_`a^TUVWXYZ[\]^_`aWXYZ[\]TUV^_`aTUVUVWXYXYZ[\]^_`a;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.eduaTUVWXYZ[\]^_`a bcdefghijklmnopqrs{ bcdefghijklmnopqrsefghijklmbcdnopqrsbcdcdefgfghijklmnopqrs~ bcdefghijklmnopqrstuvwxyz{|}~{ tuvwxyz{|}~wxyz{|}~tuvtuvuvwxyxyz{|}~\  !"#$%&'()*+,-.//012 3 3 4 5 5 6 7 8 9 : ; < = > ? ? @ A A B C D E F G H I J K L M N ? ? @ A A B C D E F G H I J K L M N O O P Q Q R S T U V W X Y Z [ [ \ ] ] ^ _ ` a b c d e f g h i j[[\]]^_`abcdefghijOOPQQRTUVXYZklmklnkloklpkqrklskltkqukvwkxykvzkv{kv|kv}kv~kvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvklkkkkkkkkkkkkkkkkkkkkkkkkkkkkSW mtlx-0.1.4Control.Monad.IndexControl.Monad.IdentityXControl.Monad.ReaderX.ClassControl.Monad.StateX.ClassControl.Monad.WriterX.ClassControl.Monad.RWSX.ClassControl.Monad.ErrorX.ClassControl.Monad.ErrorXControl.Monad.ReaderXControl.Monad.StateX.LazyControl.Monad.StateX.StrictControl.Monad.WriterX.LazyControl.Monad.RWSX.LazyControl.Monad.RWSX.StrictControl.Monad.WriterX.StrictControl.Monad.StateXControl.Monad.WriterXControl.Monad.RWSXIndexgetValflip23 IdentityX runIdentityX mkIdentityX MonadReaderXaskxlocalxasksx MonadStateXgetxputxmodifyxgetsx MonadWriterXtellxlistenxpassxlistensxcensorx MonadRWSX MonadErrorX throwErrorx catchErrorxErrorXnoMsgxstrMsgxErrorTX runErrorTX' runErrorTX mapErrorTXReaderTX runReaderTX'ReaderX runReaderX' mkReaderX runReaderX mapReaderx withReaderx mkReaderTX runReaderTX mapReaderTX withReaderTXStateTX runStateTX'StateX runStateX'mkStateX runStateX evalStatex execStatex mapStatex withStatex mkStateTX runStateTX evalStateTX execStateTX mapStateTX withStateTXWriterTX runWriterTX'WriterX runWriterX' mkWriterX runWriterX execWriterX mapWriterX mkWriterTX runWriterTX execWriterTX mapWriterTXRWSTX runRWSTX'RWSXrunRWSX'mkRWSXrunRWSXevalRWSXexecRWSXmapRWSXwithRWSXmkRWSTXrunRWSTX evalRWSTX execRWSTXmapRWSTX withRWSTXbaseGHC.Basefail>>=>>returnControl.Monad.FixmfixMonadFunctorMonadFix Control.Monad MonadPlus Data.FunctionfixapliftM5liftM4liftM3liftM2liftMunlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinforever<=<>=>msumforM_forMfilterMguardmapM_mapM sequence_sequence=<<mplusmzerofmap mtl-1.1.1.0Control.Monad.Reader.Classaskslocalask MonadReaderControl.Monad.State.Classgetsmodifyputget MonadStateControl.Monad.Writer.Classcensorlistenspasslistentell MonadWriter mkErrorTXControl.Monad.Translift MonadTransliftIOMonadIO Data.MonoidmconcatmappendmemptyMonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLast