-f      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR S T U V W X Y Z [ \ ] ^ _ ` a b c d e @(c) Ross Paterson 2012, (c) 2015 KONISHI Yohsuke BSD-style (see the file LICENSE)KONISHI Yohsuke experimentalportableSafe fghi   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 j.  (1+) |> 23#The auguments-flipped function for .  1 <| (+2)3 1 <|(+)|> 23 1 <|(+)|> 2 <|(*)|> 39 1 <|(,)|> 2(1,2) Alias to k. Alias to l. (1+) |$> [2][3]#The auguments-flipped function for . [1] <$| (+2)[3]("<"++)|$> ["a","b"] <$|(++">") ["<a>","<b>"] Alias to m.[(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]:[1,2] -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2>[Just 3,Just (-1),Just 2,Nothing,Just 4,Just 0,Just 4,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{|}~      !"#$%&'(2mknopqrstuvwxyz{l|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'( !"#$%&'()*+,-./210345679:;<>=8?@ABDCEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'( !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'( !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'(---MConor McBride and Ross Paterson 2005, (c) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---Safe35 )[], 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]])*+,-./0123456)*+,-./0123456)*+,-./0123456)*+,-./0123456$Enable deep level Monad programming.(c) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---Safe35 7Anologous for j, but (-<) is left associative. Just -< 3Just 38#The auguments-flipped function for 7. 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:}79Anologous for ", but the infix preference is low.((3+) <-< (2*) <-< (1+)) -< 17:#The auguments-flipped function for 9. 1 >- ((+1) >-> (*2) >-> (+3))7;)The level-2 bind function, analogous for .:{ -- 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]<.The level-2 composite function, analogous for .=-The level-2 sequence function, analogous for . Definition:  m >>~ f = m >>== \_ -> f >-A level-2 cover-bind function, analogous for . Definition:  m >-== f = (-*) m >>== f ?-A level-2 cover-bind function, analogous for . Definition:  m ->== f = (*:) m >>== f @1A level-2 cover-sequence function, analogous for . Definition:  m >-~ f = (-*) m >>~ f A1A level-2 cover-sequence function, analogous for . Definition:  m ->~ f = (*:) m >>~ f B)The level-3 bind function, analogous for .:{  -- 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"]]`This messy code above can be neatly rewritten to the code below by grace of the 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"]]x789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~x78:9;=>?@A<BDHIJEFGMLKPNOCQSTUVWXYZ[\]^_`abcdefghijklmnoRprstuvwxyz{|}~qx789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~x789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*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---Safe357IN Alias to ./Equivalent to (|>|) with the arguments flipped.    .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 3457>LFollowing property holds. untransfold5 . transfold5 == idFollowing property holds. untransfold4 . transfold4 == idFollowing property holds. untransfold3 . transfold3 == idFollowing property holds. untransfold2 . transfold2 == idRequired only for  and   Alias to       !"#$%&'()*+,-./01}      !"#$%&'()*+,-./01}      !"#$%&'()*+,-./01h      !"#$%&'()*+,-./013     !"#$%&'()*+,-./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---None-./>CLG23456789:;<=>?@ABCDEFGHI!     23456789:;<=>?@ABCDEFGHI;<=>?@89:ABC567DEF234GHI?23456789:;<=>?@ABCDEFGHI(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---Safe35INJKLMNOPQE JKLMNOPQJKLMNOPQJKLMNOPQ (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---SafeRSTUVWXYi!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPRSTUVWXYRSTUVWXYRSTUVWXY $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---SafeZ[\]^_`abcdeQRSTUVWX,YZ[\]^_`abcdefghijklmnopqrstuvwxZ[\]^_`abcde cde`ab]^_Z[\ Z[\]^_`abcdeQRSTUVWXy !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFFGHHIJJKLLMNOPQRSTUVWXYZ[\]^_`a b c d e f g h i j j k l l m n n o p p qrsrtrurvwxywxzw{|wx}wx~wwwwwwwwwwwwwwxwxwxwxwxwxwxwxwxwxwxwxwxwxwwxwxwwxwxwxwwxwxwwwwwwwwwwwwww w w wwwww{wxwxwxwxwxwxwxwxwxwxwx     www !""w#$w#%w&'()*()+(),-.-.-/-0-1-2-3-4-5w67w68w69w69w6:w6;w6;w6<w6=w6=w6>w6?w6?w6@w6Aw6Aw6Bw6Cw6Cw6Dw6Ew6Ew6Fw6Gw6Gw6Hw6Iw6IwxJwxKwxLwxM(NO(NP(NQ(NR(NS(NT(NUVWVWVXVYVZV[V\V]V^ _ ` a b c d e fwghwgiwgjwgkwglwgmwgnwgowgpwgqwgrwgswgtwguwgvwgwwgxwgxwgywgzwg{wg|wg}wg~wgwgwgwgwgwgwwdeepc_IIko5EcG7e5LaLD2TUNiahDeepControl.Monad.TransDeepControl.Monad.SignaturesDeepControl.ApplicativeDeepControl.CommutativeDeepControl.MonadDeepControl.Monad.Morph DeepControl.Monad.Trans.IdentityDeepControl.Monad.Trans.ExceptDeepControl.Monad.Trans.WriterDeepControl.ArrowData.Traversable sequenceAtraversefor Data.FoldablefoldMaptrans_3eG64VdP2vzGjP6wJiCp5XControl.Monad.Trans.Class MonadTransliftControl.Monad.IO.ClassMonadIOliftIOPass5Listen5Catch5CallCC5Pass4Listen4Catch4CallCC4Pass3Listen3Catch3CallCC3Pass2Listen2Catch2CallCC2|><|*:|$><$||*><*||**|**:-*|$>><<$||*>><<*||****||-*|*--*|*-|*>><<*-*><-**-><*-***:--*-***-*|$>>><<<$||*>>><<<*||******||-**|*-*|**-|--*|*--|-*--**|*-*|**-|--*|*--|-*-|*>>><<<**-->-*->--*>**->*-*>-**><*--<-*-<--*<**-<*-*<-******:---*--**-*-**--*-****-****-*|$>>>><<<<$||*>>>><<<<*||****|-***|*-**|**-*|***-|--**|-*-*|*--*|*-*-|-**-|**--|---*|--*-|-*--|*---****|-***|*-**|**-*|***-|--**|-*-*|*--*|*-*-|-**-|**--|---*|--*-|-*--|*---|*>>>><<<<*<---*<--*-<-*--<*---<--**<-*-*<*--*<*-*-<-**-<**--<-***<*-**<**-*<***----*>--*->-*-->*--->--**>-*-*>*--*>*-*->-**->**-->-***>*-**>**-*>***->*****:----*---**--*-*-*--**---*--***-*-***--***-*-*-**-***--*-*****-*****-*****-*|$>>>>><<<<<$||*>>>>><<<<<*||-****|*-***|**-**|***-*|****-|--***|-*-**|*--**|*-*-*|-**-*|**--*|**-*-|*-**-|-***-|***--|---**|--*-*|-*--*|*---*|*--*-|-*-*-|--**-|-**--|*-*--|**---|----*|---*-|--*--|-*---|*-----****|*-***|**-**|***-*|****-|--***|-*-**|*--**|*-*-*|-**-*|**--*|**-*-|*-**-|-***-|***--|---**|--*-*|-*--*|*---*|*--*-|-*-*-|--**-|-**--|*-*--|**---|----*|---*-|--*--|-*---|*----|*>>>>><<<<<*<----*<---*-<--*--<-*---<*----<---**<--*-*<-*--*<*---*<*--*-<-*-*-<--**-<-**--<*-*--<**---<--***<-*-**<*--**<*-*-*<-**-*<**--*<**-*-<*-**-<-***-<***--<-****<*-***<**-**<***-*<****-----*>---*->--*-->-*--->*---->---**>--*-*>-*--*>*---*>*--*->-*-*->--**->-**-->*-*-->**--->--***>-*-**>*--**>*-*-*>-**-*>**--*>**-*->*-**->-***->***-->-****>*-***>**-**>***-*>****-> Commutativecommutecmapcfor fmapDefaultfoldMapDefaultsink2float2sink3float3sink4float4sink5float5-<>-<-<>->>>==>==>>>~>-==->==>-~->~>>>==>===>>>>~>--==->-==-->==>>-==->>==>->==-->~->-~>--~->>~>->~>>-~>>>>==>====>>>>>~--->==-->-==->--==>---==-->>==->->==>-->==>->-==->>-==>>--==->>>==>->>==>>->==>>>-==--->~-->-~->--~>---~-->>~->->~>-->~>->-~->>-~>>--~->>>~>->>~>>->~>>>-~>>>>>==>=====>>>>>>~---->==--->-==-->--==->---==>----==--->>==-->->==->-->==>--->==>-->-==->->-==-->>-==->>--==>->--==>>---==-->>>==->->>==>-->>==>->->==->>->==>>-->==>>->-==>->>-==->>>-==>>>--==->>>>==>->>>==>>->>==>>>->==>>>>-==---->~--->-~-->--~->---~>----~--->>~-->->~->-->~>--->~>-->-~->->-~-->>-~->>--~>->--~>>---~-->>>~->->>~>-->>~>->->~->>->~>>-->~>>->-~>->>-~->>>-~>>>--~->>>>~>->>>~>>->>~>>>->~>>>>-~|>||<||>>||<<||>>>||<<<||>>>>||<<<<||>>>>>||<<<<<|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 IdentityT5 runIdentityT5 IdentityT4 runIdentityT4 IdentityT3 runIdentityT3 IdentityT2 runIdentityT2 mapIdentityT2 liftCallCC2 liftCatch2 mapIdentityT3 liftCallCC3 liftCatch3 mapIdentityT4 liftCallCC4 liftCatch4 mapIdentityT5 liftCallCC5 liftCatch5 throwError2 catchError2 throwError3 catchError3 throwError4 catchError4 throwError5 catchError5listen2pass2listen3pass3listen4pass4listen5pass5Kleisli5 runKleisli5Kleisli4 runKleisli4Kleisli3 runKleisli3Kleisli2 runKleisli2Control.Monad.SignaturesCallCCCatchListenPassbaseGHC.Base$pure Data.Functor<$><*> ApplicativeControl.ApplicativeoptionalgetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListliftA3liftA2liftA<**><$<**>manysome<|>empty AlternativefmapFunctorFoldableIdgetId$fApplicativeId $fFunctorId$fCommutativeConst$fCommutativeExceptT$fCommutativeEither$fCommutativeWriterT$fCommutative[]$fCommutativeMaybe.>>= Control.Monad>=>>>failreturnguardjoinMonadmfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<filterMforMsequencemapMmsum sequence_forM_mapM_voidapliftM5liftM4liftM3liftM2liftMwhen=<<mplusmzero MonadPlusmmorp_8dNpUU8QFPe77rrwKAb20bControl.Monad.Morphhoist|>==<|<|<>|>squash generalizeMFunctorembedMMonadT2_|*****|$fMonadTrans_ExceptT$fMonadTrans_MaybeT$fMonadTrans_ListT$fMonadTransCoverStateT$fMonadTransCoverReaderT$fMonadTransCoverRWST$fMonadTransCoverExceptT$fMonadTransCoverMaybeT$fMonadTransCoverListT$fMonadTransDownStateT$fMonadTransDownReaderT$fMonadTransDownRWST$fMonadTransDownExceptT$fMonadTransDownMaybeT$fMonadTransDownListTlift2IdentityT2lift3IdentityT3lift4IdentityT4lift5IdentityT5$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$fCommutativeIdentityTData.Functor.Identity runIdentityIdentityControl.Monad.Trans.Identity liftCatch liftCallCC mapIdentityT runIdentityT IdentityTControl.Monad.FixmfixMonadFix Data.Functionfixmtl_KMpng31YRYc5JfMWFZ3FCUControl.Monad.Error.Class catchError throwError MonadErrorControl.Monad.Trans.ExceptExceptTExcept runExcept mapExcept withExcept runExceptT mapExceptT withExceptT Data.Monoid<>getDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastgetAltAltmconcatmappendmemptyMonoidControl.Monad.Writer.Classcensorlistenspasslistentellwriter MonadWriterControl.Monad.Trans.Writer.LazyWriterT runWriterTWriter runWriter execWriter mapWriter execWriterT mapWriterT$fArrowKleisli5$fCategory*Kleisli5$fArrowKleisli4$fCategory*Kleisli4$fArrowKleisli3$fCategory*Kleisli3$fArrowKleisli2$fCategory*Kleisli2 Control.Arrowarrfirstapp|||loopleftApp^<<<<^>>^^>>returnA&&&***secondArrow runKleisliKleisli zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoice ArrowApply ArrowMonad ArrowLoopControl.Category>>><<<