%d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  0Enable deep level Applicative style programming.(C) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---Safe Alias for .  (1+) |> 23#The auguments-flipped function for .  1 <| (+2)3 1 <|(+)|> 23 1 <|(+)|> 2 <|(*)|> 39 1 <|(,)|> 2(1,2) Alias for . Alias for . (1+) |$> [2][3]#The auguments-flipped function for . [1] <$| (+2)[3]("<"++)|$> ["a","b"] <$|(++">") ["<a>","<b>"] Alias for .[(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 . Combination consisted of ket  and cover  , defined as f |* x = f |*> (*:) x. [(1+)] |* 2[3][1] <$|(+)|* 2[3][1] <$|(+)|* 2 <$|(*)|* 3[9]Just 1 <$|(,)|* 2 Just (1,2)#The auguments-flipped function for .  1 *| [(+2)][3]1 *| [(+)] |* 2[3]1 *|[(+),(-),(*),(^)]|* 2 [3,-1,2,1]1 *|Just (,)|* 2 Just (1,2)Combination consisted of cover  twice, defined as (**:) = (*:) . (*:).Combination consisted of cover  and ket  , defined as (-*) = ((*:)|$>). Alias for . Combination consisted of cover  twice, defined as (|$>>) = (|$>) . (|$>).(+1) |$>> [[2]][[3]]#The auguments-flipped function for [[2]] <<$| (+1)[[3]]The lifted function of  , defined as (|*>>) = 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 () The lifted function of  , defined as (<<*|) = liftA2 (<*|).!Combination consisted of ket  and cover  , defined as f |** x = f |*>> (**:) x.[Just 1] <<$|(+)|** 2[Just 3]"#The auguments-flipped function for !.1 **|(+)|$>> [Just 2][Just 3]1 **|[Just (+)]|** 2[Just 3]11 **|[Just (+), Just (-), Just (*), Nothing]|** 2![Just 3,Just (-1),Just 2,Nothing]#Combination consisted of ket  and cover  , defined as f |-* x = f |*>> (-*) x.[Just 1] <<$|(+)|-* [2][Just 3]$Combination consisted of ket  and cover  , defined as f |*- x = f |*>> (*-) x.[Just 1] <<$|(+)|*- Just 2[Just 3]%#The auguments-flipped function for #.[1] -*|(+)|$>> [Just 2][Just 3]&#The auguments-flipped function for $.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]'The lifted function of  , defined as  liftA2 (*>).%sequence $ Just (print 1) *>> (**:) 21Just 2"(-*) (print 1) *>> return (Just 2)1Just 2(The lifted function of  , defined as  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])"Combination consisted of sequence ' and cover .print 1 -*> (*:) (Just 2)1Just 2*"Combination consisted of sequence ( and cover .(*:) (Just 2) <-* print 11Just 2%print 1 -*> (*:) (Just 3) <-* print 212Just 3%print 1 -*> (*:) (Just 3) <*- Nothing1Nothing+"Combination consisted of sequence ' and cover .$sequence $ print 1 *-> Just ((*:) 2)1Just 2,"Combination consisted of sequence ( and cover .$sequence $ Just ((*:) 2) <*- print 11Just 20sequence $ print 1 *-> Just ((*:) 3) <*- print 212Just 30sequence $ print 1 *-> Just ((*:) 3) <-* NothingNothingQ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`an      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aQ !"#$%&'()*+,-0/.123456789:;<=?>@ABCEDFGHIJKLMNOPQRSTUVWXYZ[\]^_`aQ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aQ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a$Enable deep level Monad programming.(C) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---SafefThe f5 class defines the Monad functions for level-3 types  m1 (m2 (m3 a).:{  -- IO-List-List Monad [["a","b"]] ->>== \x -> [[0],[1,2]] ->>== \y -> print (x,y) >--~ (***:) (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"]]hThe h5 class defines the Monad functions for level-2 types  m1 (m2 a)G; such as [[a]], Maybe [a], Either () (Maybe a), a -> [b], IO [a], etc.:{ -- List-List Monad [["a","b"]] >>== \x ->  [[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 -- ((->) [Int])-Maybe Monad lengthM [] = Nothing# lengthM xs = Just (length xs) & averageM :: [Int] -> Maybe Double averageM = I sum >-== \s -> -- sum :: [Int] -> Int -- ((->) [Int]) Monad lengthM >>== \l ->0 (**:) (fromIntegral s / fromIntegral l)( in [averageM [10, 25, 70], averageM []]:}[Just 35.0,Nothing]iBind function of level-2.j Alias for . Just -< 3Just 3k#The auguments-flipped function for j. 3 >- JustJust 3:{let plus :: Int -> Int -> Int plus x y =  x >- \a -> y >- \b -> a + b in plus 3 4:}7l Alias for . ((3+) <-< (2*) <-< (1+)) -< 17m#The auguments-flipped function for l. 1 >- ((+1) >-> (*2) >-> (+3))7n#The auguments-flipped function for  . oComposite function of level-2.pSequence function of level-2.q!Bind-cover function made of bind i and cover  , defined as m >-== k = (-*) m >>== k.r!Bind-cover function made of bind i and cover  , defined as m >-== k = (*-) m >>== k.s)Sequence-cover function made of sequence p and cover  , defined as m >-~ k = (-*) m >>~ k.t)Sequence-cover function made of sequence p and cover  , defined as m >-~ k = (*-) m >>~ k.1bcdefghijklmnopqrstuvwxyz{|}~!"#$%&'()*+,O-. /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUbcdefghijklmnopqrstuvwxyz{|}~%jkmlnhipqrstofgz{|wxyv~}udebc-bcdefghijklmnopqrstuvwxyz{|}~!"#$%&'()*+,!cegijklmnopqrstuvwxyz{|}~Commutative Functor.MConor McBride and Ross Paterson 2005, (C) 2015 KONISHI Yohsuke 4BSD-style (see the LICENSE file in the distribution)ocean0yohsuke@gmail.com experimental---SafeThis method is equivalent for   just except the name. The only difference is the name "commute", that is to say from which no action kind of concepts smell.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 4 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 V instance.WXYZ[\]^_` WXYZ[\]^_`*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 for a./Equivalent to (|>|) with the arguments flipped. bcdefgahij .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. untransfold3 . transfold3 == idFollowing property holds. untransfold2 . transfold2 == idRequired only for  and  7klmnopqrs22$klmnopqrs (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---None-3579Ctuvwx=-. /0y1234z56789:;<=>?@ABCDEFGHI{JKLMNOPQRSTU|}~tuvwx%Extension for mtl's Contrl.Monad.RWS.(C) 2015 KONISHI Yohsuke, (c) Andy Gill 2001, (c) Oregon Graduate Institute of Science and Technology, 2001 BSD-style (see the file LICENSE)ocean0yohsuke@gmail.com experimental---Safe357>L(-. /0y1234z56789:;<=>?@ABCDEFGHI{JKLMNOPQRSTU   $(Extension for mtl's Contrl.Monad.Reader.(c) Andy Gill 2001, (c) Oregon Graduate Institute of Science and Technology 2001, (c) Jeff Newbern 2003-2007, (c) Andriy Palamarchuk 2007, (C) 2015 KONISHI Yohsuke, BSD-style (see the file LICENSE)ocean0yohsuke@gmail.com experimental---Safe357>LG-. /0y1234z56789:;<=>?@ABCDEFGHI{JKLMNOPQRSTU'Extension for mtl's Contrl.Monad.State.(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---Safe357>L"S-. /0y1234z56789:;<=>?@ABCDEFGHI{JKLMNOPQRSTU       (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---Safe357>L# !"#$%&'()*+k-. /0y1234z56789:;<=>?@ABCDEFGHI{JKLMNOPQRSTU ,-./01234  !"#$%&'()*+ $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---Safe56789:;<,=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\  56789:;<] !"#$%$&$'$($)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                       !"##$%&'()*+,-./0123456789:;<=>?@ABCD@E@F@G@H@I@J@K@L@M@N@O@P@Q@R S T UVWXYZ[\]^_`abcdefgghijklmnopqrpqspqtpqupqvpqwpqxpqypqzpq{|}~$$       ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 89:9:9;9<9=9>9?9@9A B C D E F G H IJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ[J[J\J]J^J_J`JaJbJcJdJeJeJfghgijdeepc_KTbZpiQQ4YrIAc9Gc7T5zADeepControl.Monad.TransDeepControl.Monad.Trans.RWSDeepControl.ApplicativeDeepControl.MonadDeepControl.CommutativeDeepControl.Monad.MorphDeepControl.Monad.Trans.ReaderDeepControl.Monad.Trans.StateDeepControl.Monad.Trans.WriterDeepControl.ArrowData.Traversable sequenceAtraversefor Data.FoldablefoldMapDeepControl.Monad.Trans.Excepttrans_3eG64VdP2vzGjP6wJiCp5XControl.Monad.Trans.Class MonadTransliftControl.Monad.IO.ClassMonadIOliftIOmtl_KMpng31YRYc5JfMWFZ3FCUControl.Monad.Reader.Classreaderlocalask MonadReaderControl.Monad.State.Classstateputget MonadStateControl.Monad.Writer.Classpasslistentellwriter MonadWriter|><|*:|$><$||*><*||**|**:-**-|$>><<$||*>><<*||****||-*|*--*|*-|*>><<*-*><-**-><*-***:-***-***---*-*-*--|$>>><<<$||*>>><<<*||******||-**|*-*|**-|--*|*--|-*--**|*-*|**-|--*|*--|-*-|*>>><<<**-->-*->--*>**->*-*>-**><*--<-*-<--*<**-<*-*<-******:|$>>>><<<<$||*>>>><<<<*|*>>>><<<<******:|$>>>>><<<<<$||*>>>>><<<<<*|*>>>>><<<<<*Monad5>>>>>==Monad4>>>>==Monad3>>>==Monad2>>==-<>-<-<>-><<>==>>>~>-==->==>-~->~>===>>>>~>--==->-==-->==>>-==->>==>->==>--~->-~-->~>>-~->>~>->~>====>>>>>~>=====>>>>>>~ Commutativecommutecmapcfor fmapDefaultfoldMapDefault|>||<||>>||<<||>>>||<<<||>>>>||<<<<||>>>>>||<<<<<| MonadTrans5lift5 MonadTrans4lift4MonadTransCover3|--*||-*-||*--|MonadTransFold3 transfold3 untransfold3T__M__MonadTrans3Down Trans3Down MonadTrans3lift3MonadTransCover2|-*||*-|MonadTransFold2 transfold2 untransfold2T_M_MonadTrans2Down Trans2Down MonadTrans2lift2 MonadTrans_transuntransMonadTransCover|*|MMonadTransDown TransDown|**|trans2untrans2|***||-**||*-*||**-|trans3untrans3RWST3runRWST3RWST2runRWST2rwsT2 evalRWST2 execRWST2mapRWST2 withRWST2rwsT3 evalRWST3 execRWST3mapRWST3 withRWST3ReaderT3 runReaderT3ReaderT2 runReaderT2 mapReaderT2 mapReaderT3StateT3 runStateT3StateT2 runStateT2 evalStateT2 execStateT2 mapStateT2 withStateT2 evalStateT3 execStateT3 mapStateT3 withStateT3WriterT3 runWriterT3WriterT2 runWriterT2 execWriterT2 mapWriterT2 execWriterT3 mapWriterT3Kleisli5 runKleisli5Kleisli4 runKleisli4Kleisli3 runKleisli3Kleisli2 runKleisli2baseGHC.Base$pure Data.Functor<$><*>*><* ApplicativeControl.ApplicativeoptionalgetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListliftA3liftA2liftA<**><$manysome<|>empty Alternative.>>$fMonad5Either $fMonad5[] $fMonad5Maybe$fMonad4Either $fMonad4[] $fMonad4Maybe$fMonad3Either $fMonad3[] $fMonad3Maybe$fMonad2Either $fMonad2[] $fMonad2Maybefail>>=fmapreturn Control.MonadguardjoinMonadFunctormfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMforMsequencemapMmsum sequence_forM_mapM_voidapliftM5liftM4liftM3liftM2liftMwhen=<<mplusmzero MonadPlusFoldableIdgetId$fApplicativeId $fFunctorId$fCommutativeConst$fCommutative(,)$fCommutativeEither$fCommutative[]$fCommutativeMaybemmorp_8dNpUU8QFPe77rrwKAb20bControl.Monad.Morphhoist|>==<|<|<>|>squash generalizeMFunctorembedMMonad$fMonadTrans_ExceptT$fMonadTrans_MaybeT$fMonadTrans_ListT$fMonadTransCoverExceptT$fMonadTransCoverMaybeT$fMonadTransCoverListT$fMonadTransDownExceptT$fMonadTransDownMaybeT$fMonadTransDownListT$fCommutativeExceptT$fMonad5ExceptT$fMonad4ExceptT$fMonad3ExceptT$fMonad2ExceptTControl.Monad.FixmfixMonadFix Data.FunctionfixControl.Monad.Error.Class catchError throwError MonadErrorControl.Monad.Trans.ExceptExceptTExcept runExcept mapExcept withExcept runExceptT mapExceptT withExceptT$fMonadTransCover3RWST3$fMonadTransFold3RWST3$fMonadTrans3DownRWST3$fMonadIORWST3$fMonadTrans3RWST3$fMonadStatesRWST3$fMonadWriterwRWST3$fMonadReaderrRWST3 $fMonadRWST3$fApplicativeRWST3$fFunctorRWST3$fMonadTransCover2RWST2$fMonadTransFold2RWST2$fMonadTrans2DownRWST2$fMonadIORWST2$fMonadTrans2RWST2$fMonadStatesRWST2$fMonadWriterwRWST2$fMonadReaderrRWST2 $fMonadRWST2$fApplicativeRWST2$fFunctorRWST2$fMonadTransCoverRWST$fMonadTransDownRWST Data.Monoid<>getDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastgetAltAltmconcatmappendmemptyMonoidControl.Monad.RWS.ClassMonadRWSasksgetsmodify'modifycensorlistensControl.Monad.Trans.RWS.LazyRWSTrunRWSTRWSrwsrunRWSevalRWSexecRWSmapRWSwithRWSevalRWSTexecRWSTmapRWSTwithRWST$fMonadTransCover3ReaderT3$fMonadTransFold3ReaderT3$fMonadTrans3DownReaderT3$fMonadIOReaderT3$fMonadTrans3ReaderT3$fMonadReaderrReaderT3$fMonadReaderT3$fApplicativeReaderT3$fFunctorReaderT3$fMonadTransCover2ReaderT2$fMonadTransFold2ReaderT2$fMonadTrans2DownReaderT2$fMonadIOReaderT2$fMonadTrans2ReaderT2$fMonadReaderrReaderT2$fMonadReaderT2$fApplicativeReaderT2$fFunctorReaderT2$fMonadTransCoverReaderT$fMonadTransDownReaderTControl.Monad.Trans.ReaderReaderT runReaderTReader runReader mapReader withReader mapReaderT withReaderT$fMonadTransCover3StateT3$fMonadTransFold3StateT3$fMonadTrans3DownStateT3$fMonadIOStateT3$fMonadTrans3StateT3$fMonadStatesStateT3$fMonadStateT3$fApplicativeStateT3$fFunctorStateT3$fMonadTransCover2StateT2$fMonadTransFold2StateT2$fMonadTrans2DownStateT2$fMonadIOStateT2$fMonadTrans2StateT2$fMonadStatesStateT2$fMonadStateT2$fApplicativeStateT2$fFunctorStateT2$fMonadTransCoverStateT$fMonadTransDownStateTControl.Monad.Trans.State.LazyStateT runStateTStaterunState evalState execStatemapState withState evalStateT execStateT mapStateT withStateT$fMonadTransCover3WriterT3$fMonadTransFold3WriterT3$fMonadTrans3DownWriterT3$fMonadIOWriterT3$fMonadTrans3WriterT3$fMonadWriterwWriterT3$fMonadWriterT3$fApplicativeWriterT3$fFunctorWriterT3$fMonadTransCover2WriterT2$fMonadTransFold2WriterT2$fMonadTrans2DownWriterT2$fMonadIOWriterT2$fMonadTrans2WriterT2$fMonadWriterwWriterT2$fMonadWriterT2$fApplicativeWriterT2$fFunctorWriterT2$fMonadTransCoverWriterT$fMonadTransDownWriterT$fMonadTrans_WriterT$fMonad5WriterT$fMonad4WriterT$fMonad3WriterT$fMonad2WriterTControl.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>>><<<