úÎ/8+¯      experimental6Sebastian Fischer <mailto:sebf@informatik.uni-kiel.de>?Interface to transform nested monadic data types. The provided  function 0 is supposed to map the given function on every ! monadic argument. The result of  may be of the same type as E the argument but can also be of a different type, e.g. to convert a > value with nested monadic arguments to a corresponding value  without. We provide instances of the  class for some predefined , Haskell types. For flat types the function  just returns its C argument which has no arguments to which the given function could  be applied. 3Interface of monads that support explicit sharing. <Yields an action that returns the same results as the given C action but whose effects are only executed once. Especially, when B the resulting action is duplicated it returns the same result at  every occurrence. >Lifts all monadic effects in nested monadic values to the top  level. If m3 is a monad for non-determinism and the argument a < data structure with nested non-determinism then the result 1 corresponds to the normal form of the argument. CAn instance for lists with monadic elements that lifts all monadic = effects to the top level and yields a list with non-monadic  elements. -An instance for lists with monadic elements.  experimental0Sebastian Fischer (sebf\@informatik.uni-kiel.de) =Continuation-based, store-passing implementation of explicit & sharing. It is an inlined version of ContT (ReaderT Store m) 8 where the result type of continuations is polymorphic. Runs a computation of type Lazy m a with given continuation and  store. ALifts all monadic effects to the top-level and unwraps the monad # transformer for explicit sharing.  experimental0Sebastian Fischer (sebf\@informatik.uni-kiel.de) >Data type for lists where both the head and tail are monadic.  The empty monadic list. %Constructs a non-empty monadic list. !Checks if monadic list is empty. -Yields the head of a monadic list. Relies on  instance ( to provide a failing implementation of . -Yields the tail of a monadic list. Relies on  instance ( to provide a failing implementation of . #This instance enables the function Control.Monad.Sharing.eval to = transform ordinary Haskell lists into nested monadic lists. #This instance enables the function Control.Monad.Sharing.eval to = transform nested monadic lists into ordinary Haskell lists. DThis instance allows to use nested monadic lists as argument to the  Control.Monad.Sharing.share combinator.       experimental6Sebastian Fischer <mailto:sebf@informatik.uni-kiel.de>. !"#$%&'()*+,-./0123456789:;<=>?@ABCDE       !"#$ % & ' ( )*+,-./0123456789:;<=>?@ABCDEFGH IJexplicit-sharing-0.4.0.1Control.Monad.Sharing.ClassesControl.Monad.SharingData.Monadic.List(Control.Monad.Sharing.Implementation.CPSTranstransSharingshareevalLazyevalLazyListConsNilnilconsisEmptyfirstrest $fTransm[][] $fTransm[][]0UntypedStorefromLazyrunLazylazymemotypedbase Control.Monad MonadPlusGHC.Basefail$fTransm[]List$fTransmList[]$fTransmListList>>=>>returnMonadFunctorapliftM5liftM4liftM3liftM2liftMunlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinforever<=<>=>msumforM_forMfilterMguardmapM_mapM sequence_sequence=<<mplusmzerofmap