C      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{| } ~                                                                                                     @(c) Ross Paterson 2012, (c) 2015 KONISHI Yohsuke BSD-style (see the file LICENSE)KONISHI Yohsuke experimentalportableSafe    0Enable deep level Applicative style programming.(c) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimentalportableSafe Alias to .  (1+) |> 23#The auguments-flipped function for .  1 <| (+2)3 1 <|(+)|> 23 1 <|(+)|> 2 <|(*)|> 39 1 <|(,)|> 2(1,2) Alias to . Alias to . (1+) |$> [2][3]#The auguments-flipped function for . [1] <$| (+2)[3]("<"++)|$> ["a","b"] <$|(++">") ["<a>","<b>"] Alias to .[(1+)] |*> [2][3][1] <$|(+)|*> [2][3][1] <$|(+)|*> [0,1,2][1,2,3]%[0,1] <$|(+)|*> [2,3] <$|(^)|*> [4,5][16,32,81,243,81,243,256,1024]Efoldr (\x acc -> x <$|(:)|*> acc) ((*:) []) [Just 1, Just 2, Just 3] Just [1,2,3]Efoldr (\x acc -> x <$|(:)|*> acc) ((*:) []) [Just 1, Nothing, Just 3]Nothing(filter (even <$|(&&)|*> (10 >)) [1..100] [2,4,6,8]9filter (even <$|(&&)|*> (10 >) <$|(&&)|*> (5 <)) [1..100][6,8]#The auguments-flipped function for .  Definition:  f |* x = f |*> (*:) x  [(1+)] |* 2[3][1] <$|(+)|* 2[3](,) |$> ["a1","a2"] |* 'b'[("a1",'b'),("a2",'b')](,,) 'a' |$> ["b1","b2"] |* 'c'[('a',"b1",'c'),('a',"b2",'c')]'(,,,) 'a' |$> ["b1","b2"] |* 'c' |* 'd''[('a',"b1",'c','d'),('a',"b2",'c','d')]0(,,,) 'a' |$> ["b1","b2"] |* 'c' |*> ["d1","d2"]Q[('a',"b1",'c',"d1"),('a',"b1",'c',"d2"),('a',"b2",'c',"d1"),('a',"b2",'c',"d2")]#The auguments-flipped function for .  1 *| [(+2)][3]1 *| [(+)] |* 2[3]1 *|[(+),(-),(*),(^)]|* 2 [3,-1,2,1]1 *|Just (,)|* 2 Just (1,2) Definition:  (**:) = (*:) . (*:) (**:) 1 :: Maybe [Int]Just [1] Definition:  (-*) = ((*:)|$>) (-*) (Just 1) :: Maybe [Int]Just [1] Definition:  (|$>>) = (|$>) . (|$>) (+1) |$>> [[2]][[3]] #The auguments-flipped function for [[2]] <<$| (+1)[[3]]! Definition:  (|*>>) = liftA2 (|*>) [Just 1] <<$|(+)|*>> [Just 2][Just 3][Just 1] <<$|(,)|*>> [Just 2] [Just (1,2)])[[1]] <<$|(+)|*>> [[2]] <<$|(-)|*>> [[3]][[0]]wfoldr (\n acc -> n <<$|(+)|*>> acc) ((**:) 0) [Right (Just 1), Right (Just 2), Right (Just 3)] :: Either () (Maybe Int)Right (Just 6)vfoldr (\n acc -> n <<$|(+)|*>> acc) ((**:) 0) [Right (Just 1), Right Nothing, Right (Just 3)] :: Either () (Maybe Int) Right NothingVfoldr (\n acc -> n <<$|(+)|*>> acc) ((**:) 0) [Right (Just 1), Right Nothing, Left ()]Left ()" Definition:  (<<*|) = liftA2 (<*|) # Definition:  f |** x = f |*>> (**:) x [Just 1] <<$|(+)|** 2[Just 3]$ Definition:  x **| f = (**:) x <<*| f 1 **|(+)|$>> [Just 2][Just 3]1 **|[Just (+)]|** 2[Just 3]11 **|[Just (+), Just (-), Just (*), Nothing]|** 2![Just 3,Just (-1),Just 2,Nothing]% Definition:  f |-* x = f |*>> (-*) x [Just 1] <<$|(+)|-* [2][Just 3]& Definition:  f |*- x = f |*>> (*:) x [Just 1] <<$|(+)|*- Just 2[Just 3]' Definition:  x -*| f = (-*) x <<*| f [1] -*|(+)|$>> [Just 2][Just 3]( Definition:  x *-| f = (*:) x <<*| f Just 1 *-|(+)|$>> [Just 2][Just 3]Just 1 *-|[Just (+)]|** 2[Just 3]Just 1 *-|[Just (+)]|*- Just 2[Just 3][1] -*|[Just (+)]|*- Just 2[Just 3]8[1] -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2![Just 3,Just (-1),Just 2,Nothing]:[0,1] -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2A[Just 2,Just 3,Just (-2),Just (-1),Just 0,Just 2,Nothing,Nothing](print 1 -*|return [\_ _ -> 3]|-* print 212[3]) Definition:  (*>>) = liftA2 (*>) %sequence $ Just (print 1) *>> (**:) 21Just 2"(-*) (print 1) *>> return (Just 2)1Just 2* Definition:  (<<*) = liftA2 (<*) %sequence $ (**:) 2 <<* Just (print 1)1Just 28sequence $ Just (print 1) *>> (**:) 3 <<* Just (print 2)12Just 3Lsequence $ [putStr "1", putStr "2"] *>> (**:) 0 <<* [putStr "3", putStr "4"]13142324[0,0,0,0]+ Definition:  a -*> x = (-*) a *>> x print 1 -*> (*:) (Just 2)1Just 2, Definition:  x <-* a = x <<* (-*) a (*:) (Just 2) <-* print 11Just 2%print 1 -*> (*:) (Just 3) <-* print 212Just 3%print 1 -*> (*:) (Just 3) <*- Nothing1Nothing- Definition:  a *-> x = (*:) a *>> x $sequence $ print 1 *-> Just ((*:) 2)1Just 2. Definition:  x <*- a = x <<* (*:) a $sequence $ Just ((*:) 2) <*- print 11Just 20sequence $ print 1 *-> Just ((*:) 3) <*- print 212Just 30sequence $ print 1 *-> Just ((*:) 3) <-* NothingNothing !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'(2 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'( !"#$%&'()*+,-./210345679:;<>=8?@ABDCEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'( !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'(446433333664 3!3"3#3$3%3&3'3(3)5*5+5,5-5.5/606162634435363738393:3;3<3=3>3?3@3A3B3C3D3E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S6T6U6V6W6X6Y6Z6[4\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}5~5555555555555555555555555555566666666666666664333333333333333333333333333333333333333333333333333333333333333555555555555555555555555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5---MConor McBride and Ross Paterson 2005, (c) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---Safe9; )[], Maybe, Either, Except and Writer are all commutative each other. So these monads can be deepened to Monad2, Monad3, Monad4 and Monad5.*This method is equivalent for  { except the name. The only difference is the name "commute", that is to say from which no action kind of concepts smell.commute $ Just [1][Just 1]commute $ [Just 1]Just [1]commute $ Right (Just 1)Just (Right 1)commute $ Just (Right 1)Right (Just 1)+Do fmap f then commute, equivalent for  .,#The auguments-flipped function for +, equivalent for  .-)This function may be used as a value for  in a  instance, provided that * is defined. (Using - with a )- instance will result in infinite recursion.).)This function may be used as a value for  in a  instance./sink2 = (commute|$>) . commutesink2 $ Right (Just [1])Just [Right 1]0float2 = commute . (commute|$>)float2 $ Just [Right 1]Right (Just [1])1sink3 = (sink2|$>) . commutesink3 $ Right [Just [1]][Just [Right 1]]2float3 = commute . (float2|$>)float3 $ [Just [Right 1]]Right [Just [1]]  )*+,-./0123456789:;<=)*+,-./0123456)*+,-./0123456  )*+,-./0123456789:;<=$Enable deep level Monad programming.(c) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---Safe9;BThe B3 class defines the bind function for level-3 types  m1 (m2 (m3 a).:{  -- IO-List-List monad\ (*:) [["a","b"]] >>>== \x -> -- (>>>==) is the level-3 bind function, analogous for (>>=) (*:) [[0],[1,2]] >>>== \y ->^ (-**) (print (x,y)) >>>~ -- (>>>~) is the level-3 sequence function, analogous for (>>) (***:) (x ++ show y):}("a",0)("a",1)("a",2)("b",0)("b",1)("b",2)E[["a0","b0"],["a0","b1","b2"],["a1","a2","b0"],["a1","a2","b1","b2"]]UThis messy code above can be neatly rewritten to the code below with cover functions.:{  -- IO-List-List monad[ [["a","b"]] ->>== \x -> -- (->>==) is a level-3 cover-bind function, analogous for (>>=) [[0],[1,2]] ->>== \y ->] print (x,y) >--~ -- (>--~) is a level-3 cover-sequence function, analogous for (>>) (***:) (x ++ show y):}("a",0)("a",1)("a",2)("b",0)("b",1)("b",2)E[["a0","b0"],["a0","b1","b2"],["a1","a2","b0"],["a1","a2","b1","b2"]]C)The level-3 bind function, analogous for  .DThe D3 class defines the bind function for level-2 types  m1 (m2 a)F such as [[a]], Maybe [a], Either () (Maybe a), a -> [b], IO [a], etc.:{ -- List-List monadU [["a","b"]] >>== \x -> -- (>>==) is the level-2 bind function, analogous for (>>=) [[0],[1,2]] >>== \y ->  (**:) (x ++ show y):}E[["a0","b0"],["a0","b1","b2"],["a1","a2","b0"],["a1","a2","b1","b2"]]:{ ; let lengthM :: [Int] -> Maybe Int -- (->)-Maybe monad lengthM [] = Nothing# lengthM xs = Just (length xs) ; averageM :: [Int] -> Maybe Double -- (->)-Maybe monad averageM =  (-*) sum >>== \s -> lengthM >>== \l ->0 (**:) (fromIntegral s / fromIntegral l)( in [averageM [10, 25, 70], averageM []]:}[Just 35.0,Nothing]E)The level-2 bind function, analogous for  .FAnologous for , but (-<) is left associative. Just -< 3Just 3G#The auguments-flipped function for F. 3 >- JustJust 3:{let plus :: Int -> Int -> Int plus x y = M x >- \a -> -- (>-) is the level-0 bind function, analogous for (>>=) y >- \b -> a + b in plus 3 4:}7HAnologous for  ", but the infix preference is low.((3+) <-< (2*) <-< (1+)) -< 17I#The auguments-flipped function for H. 1 >- ((+1) >-> (*2) >-> (+3))7J.The level-2 composite function, analogous for  .K-The level-2 sequence function, analogous for . Definition:  m >>~ f = m >>== \_ -> f L-A level-2 cover-bind function, analogous for  . Definition:  m >-== f = (-*) m >>== f M-A level-2 cover-bind function, analogous for  . Definition:  m ->== f = (*:) m >>== f N1A level-2 cover-sequence function, analogous for . Definition:  m >-~ f = (-*) m >>~ f O1A level-2 cover-sequence function, analogous for . Definition:  m ->~ f = (*:) m >>~ f >?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  ! "#$%&'()*+,-./0123>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~|FGIHDEKLMNOJBCQUVWRSTZYX][\P@A_`abcdefghijklmnopqrstuvwxyz{^>?}~|>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~x?1A1C1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~111111111111111111111111111111111111111111111111111111111111$Enable deep level Arrow programming.?(c) Ross Paterson 2002, (c) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---Safe,456789:;<=>?@ABCDEFGHIJKLMNOPQRS  *Extension for mmorph's Contrl.Monad.Morph.>2013 Gabriel Gonzalez, (c) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---Safe9;<=OT Alias to T./Equivalent to (|>|) with the arguments flipped. UVWXYZ[T\]   2222222222.Enable deep level Monad-Transform programming.(c) Andy Gill 2001, (c) Oregon Graduate Institute of Science and Technology, 2001, (c) 2015 KONISHI Yohsuke BSD-style (see the file LICENSE)ocean0yohsuke@gmail.com experimental---Safe 9:;<=DRFollowing property holds. untransfold5 . transfold5 == idFollowing property holds. untransfold4 . transfold4 == idFollowing property holds. untransfold3 . transfold3 == idFollowing property holds. untransfold2 . transfold2 == id%Required only for  and  - Alias to      ^ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO_PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd}-./01+,*()%&'#$2345!" 6789:;<  =>?@AB   CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdh     ^ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO_PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs3333333333 33333)363=3>3?3@3C3D3E3F3G3H3I3J3K3L3M3_3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3(Extension for mtl's Contrl.Monad.Except.?(C) 2013 Ross Paterson, (c) 2015 KONISHI Yohsuke  BSD-style (see the file LICENSE)ocean0yohsuke@gmail.com experimental---Safe9;OTtuvwxyz{E `a ! "#$%&'b()*+,-./0123cdefghijklmntuvwxyz{tuvwxyz{tuvwxyz{ 5Enables dealing with deep monads in monad-transformer@(c) 2007 Magnus Therning, (c) 2015 KONISHI Yohsuke BSD-style (see the file LICENSE)ocean0yohsuke@gmail.com experimental---None234DIRG|}~opqr!stuvwxyz{|}~|}~?|}~opqr (Extension for mtl's Contrl.Monad.Writer.(c) Andy Gill 2001, (c) Oregon Graduate Institute of Science and Technology, 2001, (c) 2015 KONISHI Yohsuke, BSD-style (see the file LICENSE)ocean0yohsuke@gmail.com experimental---Safei `a|}~ ! "#$%&'b()*+,-./0123 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                !"# $ %&'()*+,-./012 3456789:;<=>?@ABCDEDFDGDHDIDJDKDLDMDNDODPDQDQDRDSDTDUDVDWDXDYDZD[D\D]D^D^D_D`abacdefdegdehdeidejdekdeldemdendeopqrsrtuvwxywxzwx{|}|}|~||||||    wwwwwww*deepcontrol-0.4.2.1-6ptzeG44V0A8GufuEzu7HSDeepControl.Monad.TransDeepControl.Monad.SignaturesDeepControl.ApplicativeDeepControl.CommutativeDeepControl.MonadDeepControl.ArrowDeepControl.Monad.MorphDeepControl.Monad.Trans.Except DeepControl.Monad.Trans.IdentityDeepControl.Monad.Trans.WriterData.Traversable sequenceAtraversefor Data.FoldablefoldMapbaseControl.Monad.IO.ClassliftIOMonadIOtransformers-0.5.2.0Control.Monad.Trans.Class MonadTransliftPass5Listen5Catch5CallCC5Pass4Listen4Catch4CallCC4Pass3Listen3Catch3CallCC3Pass2Listen2Catch2CallCC2|><|*:|$><$||*><*||**|**:-*|$>><<$||*>><<*||****||-*|*--*|*-|*>><<*-*><-**-><*-***:--*-***-*|$>>><<<$||*>>><<<*||******||-**|*-*|**-|--*|*--|-*--**|*-*|**-|--*|*--|-*-|*>>><<<**-->-*->--*>**->*-*>-**><*--<-*-<--*<**-<*-*<-******:---*--**-*-**--*-****-****-*|$>>>><<<<$||*>>>><<<<*||****|-***|*-**|**-*|***-|--**|-*-*|*--*|*-*-|-**-|**--|---*|--*-|-*--|*---****|-***|*-**|**-*|***-|--**|-*-*|*--*|*-*-|-**-|**--|---*|--*-|-*--|*---|*>>>><<<<*<---*<--*-<-*--<*---<--**<-*-*<*--*<*-*-<-**-<**--<-***<*-**<**-*<***----*>--*->-*-->*--->--**>-*-*>*--*>*-*->-**->**-->-***>*-**>**-*>***->*****:----*---**--*-*-*--**---*--***-*-***--***-*-*-**-***--*-*****-*****-*****-*|$>>>>><<<<<$||*>>>>><<<<<*||-****|*-***|**-**|***-*|****-|--***|-*-**|*--**|*-*-*|-**-*|**--*|**-*-|*-**-|-***-|***--|---**|--*-*|-*--*|*---*|*--*-|-*-*-|--**-|-**--|*-*--|**---|----*|---*-|--*--|-*---|*-----****|*-***|**-**|***-*|****-|--***|-*-**|*--**|*-*-*|-**-*|**--*|**-*-|*-**-|-***-|***--|---**|--*-*|-*--*|*---*|*--*-|-*-*-|--**-|-**--|*-*--|**---|----*|---*-|--*--|-*---|*----|*>>>>><<<<<*<----*<---*-<--*--<-*---<*----<---**<--*-*<-*--*<*---*<*--*-<-*-*-<--**-<-**--<*-*--<**---<--***<-*-**<*--**<*-*-*<-**-*<**--*<**-*-<*-**-<-***-<***--<-****<*-***<**-**<***-*<****-----*>---*->--*-->-*--->*---->---**>--*-*>-*--*>*---*>*--*->-*-*->--**->-**-->*-*-->**--->--***>-*-**>*--**>*-*-*>-**-*>**--*>**-*->*-**->-***->***-->-****>*-***>**-**>***-*>****-> Commutativecommutecmapcfor fmapDefaultfoldMapDefaultsink2float2sink3float3sink4float4sink5float5$fApplicativeId $fFunctorId$fCommutativeExceptT$fCommutativeEither$fCommutativeWriterT$fCommutative[]$fCommutativeMaybeMonad5>>>>>==Monad4>>>>==Monad3>>>==Monad2>>==-<>-<-<>->>==>>>~>-==->==>-~->~>===>>>>~>--==->-==-->==>>-==->>==>->==-->~->-~>--~->>~>->~>>-~>====>>>>>~--->==-->-==->--==>---==-->>==->->==>-->==>->-==->>-==>>--==->>>==>->>==>>->==>>>-==--->~-->-~->--~>---~-->>~->->~>-->~>->-~->>-~>>--~->>>~>->>~>>->~>>>-~>=====>>>>>>~---->==--->-==-->--==->---==>----==--->>==-->->==->-->==>--->==>-->-==->->-==-->>-==->>--==>->--==>>---==-->>>==->->>==>-->>==>->->==->>->==>>-->==>>->-==>->>-==->>>-==>>>--==->>>>==>->>>==>>->>==>>>->==>>>>-==---->~--->-~-->--~->---~>----~--->>~-->->~->-->~>--->~>-->-~->->-~-->>-~->>--~>->--~>>---~-->>>~->->>~>-->>~>->->~->>->~>>-->~>>->-~>->>-~->>>-~>>>--~->>>>~>->>>~>>->>~>>>->~>>>>-~$fMonad5WriterT$fMonad5ExceptT$fMonad5Either $fMonad5[] $fMonad5Maybe$fMonad4WriterT$fMonad4ExceptT$fMonad4Either $fMonad4[] $fMonad4Maybe$fMonad3WriterT$fMonad3ExceptT$fMonad3Either $fMonad3[] $fMonad3Maybe$fMonad2WriterT$fMonad2ExceptT$fMonad2Either $fMonad2[] $fMonad2MaybeKleisli5 runKleisli5Kleisli4 runKleisli4Kleisli3 runKleisli3Kleisli2 runKleisli2$fArrowKleisli5$fCategoryTYPEKleisli5$fArrowKleisli4$fCategoryTYPEKleisli4$fArrowKleisli3$fCategoryTYPEKleisli3$fArrowKleisli2$fCategoryTYPEKleisli2|>||<||>>||<<||>>>||<<<||>>>>||<<<<||>>>>>||<<<<<|MonadTransCover5|----*||---*-||--*--||-*---||*----|MonadTransFold5 transfold5 untransfold5T3___T2___T____M____MonadTrans5Down Trans5Down MonadTrans5liftT5MonadTransCover4|---*||--*-||-*--||*---|MonadTransFold4 transfold4 untransfold4T2__T___M___MonadTrans4Down Trans4Down MonadTrans4liftT4MonadTransCover3|--*||-*-||*--|MonadTransFold3 transfold3 untransfold3T__M__MonadTrans3Down Trans3Down MonadTrans3liftT3MonadTransCover2|-*||*-|MonadTransFold2 transfold2 untransfold2M_T_MonadTrans2Down Trans2Down MonadTrans2liftT2 MonadTrans_transuntransMonadTransCover|*|MMonadTransDown TransDownliftTliftTTliftTTTliftTTTT liftTTTTTliftTT2liftTTT2 liftTTTT2 liftTTTTT2|**|trans2untrans2liftTT3liftTTT3 liftTTTT3 liftTTTTT3|***||-**||*-*||**-|trans3untrans3|****||--**||-*-*||-**-||*-*-||**--||*--*||-***||*-**||**-*||***-|trans4untrans4|---**||--*-*||-*--*||*---*||*--*-||*-*--||**---||--***||-*-**||*--**||*-*-*||**--*||**-*-||***--||-****||*-***||**-**||***-*||****-|trans5untrans5$fMonadTrans_ExceptT$fMonadTrans_MaybeT$fMonadTrans_ListT$fMonadTransCoverStateT$fMonadTransCoverReaderT$fMonadTransCoverRWST$fMonadTransCoverExceptT$fMonadTransCoverMaybeT$fMonadTransCoverListT$fMonadTransDownStateT$fMonadTransDownReaderT$fMonadTransDownRWST$fMonadTransDownExceptT$fMonadTransDownMaybeT$fMonadTransDownListT throwError2 catchError2 throwError3 catchError3 throwError4 catchError4 throwError5 catchError5 IdentityT5 runIdentityT5 IdentityT4 runIdentityT4 IdentityT3 runIdentityT3 IdentityT2 runIdentityT2 mapIdentityT2 liftCallCC2 liftCatch2 mapIdentityT3 liftCallCC3 liftCatch3 mapIdentityT4 liftCallCC4 liftCatch4 mapIdentityT5 liftCallCC5 liftCatch5$fMonadTransCover5IdentityT5$fMonadTransFold5IdentityT5$fMonadTrans5DownIdentityT5$fMonadIOIdentityT5$fMonadTrans5IdentityT5$fMonadPlusIdentityT5$fAlternativeIdentityT5$fMonadIdentityT5$fApplicativeIdentityT5$fCommutativeIdentityT5$fMonadTransCover4IdentityT4$fMonadTransFold4IdentityT4$fMonadTrans4DownIdentityT4$fMonadIOIdentityT4$fMonadTrans4IdentityT4$fMonadPlusIdentityT4$fAlternativeIdentityT4$fMonadIdentityT4$fApplicativeIdentityT4$fCommutativeIdentityT4$fMonadTransCover3IdentityT3$fMonadTransFold3IdentityT3$fMonadTrans3DownIdentityT3$fMonadIOIdentityT3$fMonadTrans3IdentityT3$fMonadPlusIdentityT3$fAlternativeIdentityT3$fMonadIdentityT3$fApplicativeIdentityT3$fCommutativeIdentityT3$fMonadTransCover2IdentityT2$fMonadTransFold2IdentityT2$fMonadTrans2DownIdentityT2$fMonadIOIdentityT2$fMonadTrans2IdentityT2$fMonadPlusIdentityT2$fAlternativeIdentityT2$fMonadIdentityT2$fApplicativeIdentityT2$fCommutativeIdentityT2$fMonadTransCoverIdentityT$fMonadTransDownIdentityT$fCommutativeIdentityT$fFunctorIdentityT2$fEqIdentityT2$fOrdIdentityT2$fReadIdentityT2$fShowIdentityT2$fFoldableIdentityT2$fTraversableIdentityT2$fFunctorIdentityT3$fEqIdentityT3$fOrdIdentityT3$fReadIdentityT3$fShowIdentityT3$fFoldableIdentityT3$fTraversableIdentityT3$fFunctorIdentityT4$fEqIdentityT4$fOrdIdentityT4$fReadIdentityT4$fShowIdentityT4$fFoldableIdentityT4$fTraversableIdentityT4$fFunctorIdentityT5$fEqIdentityT5$fOrdIdentityT5$fReadIdentityT5$fShowIdentityT5$fFoldableIdentityT5$fTraversableIdentityT5listen2pass2listen3pass3listen4pass4listen5pass5Control.Monad.SignaturesCallCCCatchListenPassGHC.Base$pure Data.Functor<$><*><$ Applicative*><*Control.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConstliftA3liftA2liftA<**> Alternativeempty<|>somemanyfmapFunctorFoldableIdgetId>>=. Control.Monad>=>>>guardjoinMonadfailreturnmapMsequencemfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<filterMforMmsum sequence_forM_mapM_voidapliftM5liftM4liftM3liftM2liftMwhen=<< MonadPlusmzeromplus Control.ArrowleftApp^<<<<^>>^^>>returnAArrowarrfirstsecond***&&&Kleisli runKleisli ArrowZero zeroArrow ArrowPlus<+> ArrowChoice|||+++leftright ArrowApplyapp ArrowMonad ArrowLooploopControl.Category>>><<<#mmorph-1.0.9-7Fxwo0Ga2nU9I92PguUETdControl.Monad.Morphhoist|>==<|<|<>|>squash generalizeMFunctorMMonadembedT2_|*****|Control.Monad.FixMonadFixmfix Data.Functionfix mtl-2.2.1-6qsR1PHUy5lL47Hpoa4jCMControl.Monad.Error.Class MonadError throwError catchErrorControl.Monad.Trans.ExceptExceptTExcept runExcept mapExcept withExcept runExceptT mapExceptT withExceptTlift2IdentityT2lift3IdentityT3lift4IdentityT4lift5IdentityT5Data.Functor.IdentityIdentity runIdentityControl.Monad.Trans.Identity liftCatch liftCallCC mapIdentityT IdentityT runIdentityTMonoidmemptymappendmconcat Data.Monoid<>DualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductFirstgetFirstLastgetLastAltgetAltControl.Monad.Writer.Classcensorlistens MonadWritertellwriterlistenpassControl.Monad.Trans.Writer.LazyWriterT runWriterTWriter runWriter execWriter mapWriter execWriterT mapWriterT