úÎ!E«'      !"#$%&2019 Daniel YUMITleptonyu@gmail.com experimentalportableSafe "#=?@ACX † bootsMonads which allow to produce  component under env, and env" can be changed by this procedure. boots$Return the environment of the monad. boots)Replace the environment inside the monad. boots2Produce a resource component, with open and close.bootsAsks sub value of env.boots0Defer to run side effect when closeing resource.bootsChange environment env.bootsModify environment env.bootsRun factory, return component c and updated environment env. boots Open resourcebootsClose resource  2019 Daniel YUMITleptonyu@gmail.com experimentalportableNone "#4=?@AMX8boots"Factory defines how to generate a  component under the environment env in monad m*. It is similar to IoC container in oop, env0 will provide anything to be wanted to generate  component.bootsRunning the factory.boots.Run the application using a specified factory.bootsConstruct factory under env, and adapt it to fit another env'.bootsConstruct factory under env, and adapt it to fit another env'.bootsWrap raw procedure into a .boots Lift a monad m into a .bootsNature transform of one  with monad n into another with monad m.   Safe"#X†'()*+,-./       !"#$%&'()*+,-./0123456789:boots-0.2-A3z51JwEibhBGKA2WUdOIControl.Monad.FactoryControl.Monad.Factory.Class Paths_bootsbaseGHC.Base<>Control.Monad.IO.ClassliftIOMonadIOControl.Category>>><<<(exceptions-0.10.3-JCVBmzxJmVzJ5RaoaWAPCEControl.Monad.CatchthrowM MonadThrow MonadCatch MonadMasktransformers-0.5.5.0Control.Monad.Trans.Classlift MonadFactorygetEnvputEnvproduceasksEnvdeferwithEnv modifyEnvrunEnvFactory unFactoryrunningbootwithin withFactorywrapliftFTnatTranstryBuild$fMonadFactoryenvmFactory$fCategoryTYPEFactory$fMonadContFactory$fMonadThrowFactory$fFunctorFactory$fApplicativeFactory$fMonadFactory$fMonadStateFactory$fMonadIOFactoryversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName