h$s      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`None> bound-extrasAn extension of  allowing to lift m a info f a. As we have a m*, this allows to have a pseudo-return for f: point . return :: a -> f aNote: for f = t m for some b t  = c. bound-extrasf is right m-module. (according to  9https://ncatlab.org/nlab/show/module+over+a+monad#modules definitions). We have d f m ~> f natural transformation.Laws fma  return = fma fma  (f  g) = (fma  f)  g  PropertiesFor all a m we can write associated  instance  m m where () = (e). and  are equivalent in power: fa  amb =  (f amb fa)  bound-extrasCalled action. bound-extrasModule's join variant. bound-extras m (t m) action's implementation. bound-extras m (d f m) action's implementation.1None >?(  bound-extrasg b f a is a t f expression abstracted over f, with bound variables in b, and free variables in a. g n f a ~   n  IdentityT f a   n t f a ~ t (g n f) a  bound-extrasWe cannot write h (  n t)/ pre-GHC-8.6 (without an auxiliary type class).  bound-extras8Capture some free variables in an expression to yield a   with bound variables in b. bound-extras Abstract over a single variable.2abstract1T 'x' (MaybeT (Nothing : map Just "xyz"))?ScopeT (MaybeT [Nothing,Just (B ()),Just (F "y"),Just (F "z")]) bound-extras8Capture some free variables in an expression to yield a   with bound variables in b>. Optionally change the types of the remaining free variables. bound-extras-Abstraction, capturing named bound variables. bound-extrasAbstract over a single variable bound-extrasEnter a  #, instantiating all bound variables bound-extrasEnter a  * that binds one variable, instantiating it bound-extrasEnter a  9, and instantiate all bound and free variables in one go. bound-extras bound-extras!Convert to traditional de Bruijn. bound-extrasConvert from traditional de Bruijn to generalized de Bruijn indices. bound-extras Convert to g. bound-extras;Perform substitution on both bound and free variables in a  . bound-extras;Return a list of occurences of the variables bound by this  . bound-extras1Perform a change of variables on bound variables. bound-extrasPerform a change of variables, reassigning both bound and free variables. bound-extras>Obtain a result by collecting information from bound variables bound-extrasObtain a result by collecting information from both bound and free variables bound-extrasi the bound variables in a g.  bound-extrasi? both the variables bound by this scope and any free variables.! bound-extrasj the bound variables in a g." bound-extrasj both bound and free variables# bound-extrasIf you are looking for bitraverseScopeT, this is the monster you need.1 bound-extras (>>>=) :: ... =>   n t f a -> (a -> f b) ->   n t f b# bound-extrasj -like for t bound-extrasj -like for s  !"#  !"#None >?75 bound-extras5 b f m a is a f expression abstracted over g, with bound variables in b, and free variables in a. g b f a ~ 5 n f f a ScopeT b t f a ~ 5 b (t f) f a 8 bound-extras8Capture some free variables in an expression to yield a 5 with bound variables in b.9 bound-extras Abstract over a single variable.: bound-extras8Capture some free variables in an expression to yield a 5 with bound variables in b>. Optionally change the types of the remaining free variables.; bound-extras-Abstraction, capturing named bound variables.< bound-extrasAbstract over a single variable= bound-extrasEnter a 5#, instantiating all bound variables> bound-extrasEnter a 5* that binds one variable, instantiating it? bound-extrasEnter a 59, and instantiate all bound and free variables in one go.@ bound-extrasA bound-extras!Convert to traditional de Bruijn.B bound-extrasConvert from traditional de Bruijn to generalized de Bruijn indices.C bound-extras Convert to g.E bound-extras;Perform substitution on both bound and free variables in a 5.F bound-extras;Return a list of occurences of the variables bound by this 5.G bound-extras1Perform a change of variables on bound variables.H bound-extrasPerform a change of variables, reassigning both bound and free variables.I bound-extras>Obtain a result by collecting information from bound variablesJ bound-extrasObtain a result by collecting information from both bound and free variablesK bound-extrasi the bound variables in a g.L bound-extrasi? both the variables bound by this scope and any free variables.M bound-extrasj the bound variables in a g.N bound-extrasj both bound and free variablesP bound-extrasj -like for f bound-extrasj -like for m56789:;<=>?@ABCDEFGHIJKLMNOP56789:;<=>?@ABCDEFGHIJKLMNOP      !"#$%&'()*+,-./0123456789::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijhikelmefnefopqrpsteuvewx)bound-extras-0.0.2-58eAaol9Lgw9PBWOtDwk97Control.Monad.Module Bound.ScopeT Bound.ScopeH Control.Monad>=> LiftedModulemliftModule>>==mjoin transAction composeAction$fModuleScopem$fModulefIdentityScopeTunscopeT>>>>= abstractT abstract1TabstractTEither abstractTNameabstract1TName instantiateT instantiate1TinstantiateTEither liftScopeT fromScopeTtoScopeT lowerScopeTsplatT bindingsT mapBoundT mapScopeT foldMapBoundT foldMapScopeTtraverseBoundT_traverseScopeT_traverseBoundTtraverseScopeTbitransverseScopeT $fRead1ScopeT $fShow1ScopeT $fOrd1ScopeT $fEq1ScopeT $fReadScopeT $fShowScopeT $fOrdScopeT $fEqScopeT$fNFDataScopeT$fHashableScopeT$fHashable1ScopeT$fLiftedModuleScopeTf$fModuleScopeTf $fBoundScopeT$fTraversableScopeT$fFoldableScopeT$fFunctorScopeTScopeHunscopeH abstractH abstract1HabstractHEither abstractHNameabstract1HName instantiateH instantiate1HinstantiateHEither liftScopeH fromScopeHtoScopeH lowerScopeHconvertFromScopesplatH bindingsH mapBoundH mapScopeH foldMapBoundH foldMapScopeHtraverseBoundH_traverseScopeH_traverseBoundHtraverseScopeHbitraverseScopeHbitransverseScopeH $fRead1ScopeH $fShow1ScopeH $fOrd1ScopeH $fEq1ScopeH $fReadScopeH $fShowScopeH $fOrdScopeH $fEqScopeH$fNFDataScopeH$fHashableScopeH$fHashable1ScopeH$fTraversableScopeH$fFoldableScopeH$fFunctorScopeH$fLiftedModuleScopeHm$fModuleScopeHmbaseGHC.BaseMonadtransformers-0.5.6.2Control.Monad.Trans.Class MonadTransliftData.Functor.ComposeCompose>>=fmap"bound-2.0.4-7BGGxtyxtIE3tDFOiFw7Wg Bound.ScopeScope Bound.ClassBound Data.Foldable traverse_Data.Traversabletraverse