>2Ŕ      !"#$%&'()*+,-./ 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{|}~3;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!"#$%&'()*A more general version of . +,-.D !"#$%&'()*+,-.$%&'()*!"#+,-.!"#"#$%&%&'()*+,-. ;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.edu/0123456789:;<=>?@G /0123456789:;<=>?@23456789:/01;<=>?@/01012343456789:;<=>?@;non-portable (multi-param classes, functional dependencies)Mark Snyder, marks@ittc.ku.eduI /0123456789:;<=>?@ ;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.eduABCDEFGHIJKLMNOPQRG ABCDEFGHIJKLMNOPQRDEFGHIJKLABCMNOPQRABCBCDEFEFGHIJKLMNOPQR STUVWXYZ[\]^_``STUVWXYZ[\]^_`VWXYZ[\STU]^_`STUTUVWXWXYZ[\]^_`;non-portable (multi-param classes, functional dependencies) experimentalMark Snyder, marks@ittc.ku.edubSTUVWXYZ[\]^_` a aaa bcdefghijklmnopqrs} abcdefghijklmnopqrsefghijklmbcdnopqrsbcdcdefgfghijklmnopqrs abcdefghijklmnopqrstuvwxyz{|}~} atuvwxyz{|}~wxyz{|}~tuvtuvuvwxyxyz{|}~` !"#$%&'()*+,-../012234456789:;<= > > ? @ @ A B C D E F G H I J K L M > > ? @ @ A B C D E F G H I J K L M N N O P P Q R S T U V W X Y Z [ [ \ ] ] ^ _ ` a b c d e f g h i j[[\]]^_`abcdefghijNNOPPQRSTUVWXYklmklnkloklpkqrklskltkqukvwkxykvzkv{kv|kv}kv~kvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvklkkkkkkkkkkkkkkkkkkkkkkkkkkkk mtlx-0.1.5Control.Monad.IndexControl.Monad.IdentityXControl.Monad.ReaderX.ClassControl.Monad.StateX.ClassControl.Monad.WriterX.ClassControl.Monad.ErrorX.ClassControl.Monad.ErrorXControl.Monad.ReaderXControl.Monad.StateX.LazyControl.Monad.StateX.StrictControl.Monad.WriterX.LazyControl.Monad.RWSX.ClassControl.Monad.RWSX.LazyControl.Monad.RWSX.StrictControl.Monad.WriterX.StrictControl.Monad.StateXControl.Monad.WriterXControl.Monad.RWSXIndexgetVal IdentityX runIdentityX' mkIdentityX runIdentityX MonadReaderXaskxlocalxasksx MonadStateXgetxputxmodifyxgetsx MonadWriterXtellxlistenxpassxlistensxcensorx 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 mapWriterTX MonadRWSXRWSTX runRWSTX'RWSXrunRWSX'mkRWSXrunRWSXevalRWSXexecRWSXmapRWSXwithRWSXmkRWSTXrunRWSTX evalRWSTX execRWSTXmapRWSTX withRWSTXbaseGHC.Basefail>>=>>returnControl.Monad.FixmfixMonadFunctorMonadFix Control.Monad MonadPlus Data.FunctionfixmfilterapliftM5liftM4liftM3liftM2liftMunlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinvoidforever<=<>=>msumforM_forMfilterMguardmapM_mapM sequence_sequence=<<mplusmzerofmap mkErrorTXtransformers-0.2.2.0Control.Monad.Trans.Class MonadTransliftControl.Monad.IO.ClassMonadIOliftIO mtl-2.0.1.0Control.Monad.Reader.Classlocal Data.MonoidmconcatmappendmemptyMonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastasksask MonadReaderControl.Monad.State.Classgetsmodifyputget MonadStateControl.Monad.Writer.Classcensorlistenspasslistentell MonadWriter