#ΐI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkReffet3This type provides default implementations for the I and J; type classes. The type is intended to be targeted by the  DerivingViaO language extension when writing an effect handler newtype that wraps a monad m a :  newtype MyHandler m a = MyHandler { runMyHandler :: m a } deriving (Applicative, Functor, Monad, MonadIO) deriving (MonadTrans, MonadTransControl) via 4 deriving (MonadBase b, MonadBaseControl b) (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk2 effetThis constraint synonym indicates that a higher-order effect is not handled by a specific monad transformer and must thus be delegated ("lifted") further down the monad transformer stack in order to find its associated handler.TRoughly speaking, a higher-order effect is a type class whose monad type parameter mc appears in negative position when looking at the types of its corresponding class methods (e.g., m- appears in the type of a method parameter).+An example of a higher-order effect is the  ! effect, since its class method   has a parameter of type m a. effetThis constraint synonym indicates that a first-order effect is not handled by a specific monad transformer and must thus be delegated ("lifted") further down the monad transformer stack in order to find its associated handler.SRoughly speaking, a first-order effect is a type class whose monad type parameter mh appears only in positive position when looking at the types of its corresponding class methods (e.g., m" appears only in the result type).*An example of a first-order effect is the  effect. effetWThis type synonym indicates that an effect is handled by a specific monad transformer.effetVThe kind of monad transformers, also known as effect handlers or effect interpreters.effetTThe kind of effects, which are type classes with a monad type parameter at the end.effetThe kind of monads.  (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk<2effetThis type provides instances for effect type classes in order to enable tagging, retagging and untagging of effects. Whenever this type is used as handler of an effect, the effect previously tagged with tag will be tagged with new instead.You usually don't interact with this type directly, since the type class instances for this type are generated by the functions found in the module Control.Effect.Machinery.TH.(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkLeffetThis type is used as tag for all untagged effects. In order words, every effect is tagged, even untagged ones, but all the untagged ones simply have the same tag G (short for "Global", because you can view tags as some kind of namespace mechanism, and all untagged effects live in the same global namespace).If you don't want to use tagged effects (i.e., you write effect type classes without a tag type parameter), you can ignore this type completely.effet8This type indicates that an effect (i.e., a type class) eff- is handled by a specific monad transformer t. The type is a simple wrapper around the monad transformer itself. The whole purpose of this type is to guide the type system to pick the instance of type class eff given by the type t2, and to delegate all other effects that are not effY to their handlers which are located somewhere further down the monad transformer stack.(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk(effetExtracts the untagged name from a name which is expected to end with "'". In other words, this function removes the suffix "'" from a given name, or fails otherwise.)effetGenerates the effect handling and lifting infrastructure for an effect which does not have a tag type parameter. Requires the TemplateHaskell language extension.)Consider the following effect type class:  class K' m => MyEffect a b c m where ... makeEffect ''MyEffect; then generates two instances for this effect type class (  for first-order effects,   for higher-order effects):  instance  ) (MyEffect a b c) t m => MyEffect a b c (J (MyEffect a b c) t m) where ... instance {-# OVERLAPPABLE #-}  / ) (MyEffect a b c) t m => MyEffect a b c ( eff t m) where ... Without TemplateHaskellh, you have to write these instances by hand. These two instances can also be generated separately, see . and /.*effet Similar to ,1, but only generates the tag-related definitions.+effet Similar to -1, but only generates the tag-related definitions.,effetmGenerates the effect handling and lifting infrastructure for an effect which has a tag type parameter. It is expected that the tag type parameter is the first type parameter of the effect type class. It is also expected that the names of the effect type class and its methods end with an apostrophe "'". If you want more control over the naming convention, use -.4In general, this function generates everything that )R does, but also some additional things. Consider the following effect type class:  class Kv m => MyEffect' tag a b c m where methodA' :: a -> m () methodB' :: b -> m () methodC' :: c -> m () , ''MyEffect'0 then generates the following additional things:+A type synonym for the untagged version of  MyEffect' with the name MyEffect (note the missing apostrophe).0Untagged versions of the effect methods, namely methodA, methodB and methodC! (note the missing apostrophes).An instance of  MyEffect' for the type J which does not handle the effect, but simply tags, retags or untags the  MyEffect' constraint of a computation.Three functions  tagMyEffect', retagMyEffect' and untagMyEffect' which make use of the  instance.As a rule of thumb, whenever you see an apostrophe suffix in the name of a definition somewhere in this library, it has something to do with tags. Most of the time you will use such definitions in combination with the language extension TypeApplications, like:  ... forall tag ... methodA' @tag ... tagMyEffect' @"newTag" program retagMyEffect' @"oldTag" @"newTag" program untagMyEffect' @"erasedTag" program lAll the tag-related definitions can also be generated separately (i.e., without the instances generated by )), see * and +.-effet Similar to ,, but allows to define a naming convention function for the names of the effect type class and its methods. This function is used to transform the name of a tagged definition (i.e., the type class or its methods) into its untagged counterpart.-The default naming convention is enforced by (@, which simply removes the apostrophe "'" at the end of a name..effet Similar to )L, but only generates the effect type class instance for handling an effect./effet Similar to )K, but only generates the effect type class instance for lifting an effect.()*+,-./)./,-*+((c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkV?LMINOPQRSTUVWXYZ[\]^_`aJabcdefghgijklmn ()*+,-./(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk0effetTAn effect that equips a computation with the ability to throw and catch exceptions.1effetLThrows an exception during the computation and begins exception processing.2effetJCatches an exception in order to handle it and return to normal execution.9effet Lifts an o e into any 0 e.:effetThe untagged version of 9.;effet4Runs the error effect by wrapping exceptions in the o type.<effetThe untagged version of ;. 0123456789:;< 0123789:;<456(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkAeffet"An effect that integrates a monad n into the computation m.BeffetMonadic actions in n can be lifted into m via B.B is like M, but not limited to p . In fact, M can be realized using B by specializing n to IO.CeffetNThe transformation interpreter of the embed effect. This type implements the A1 type class by transforming the integrated monad n into another integrated monad t via natural transformation.When interpreting the effect, you usually don't interact with this type directly, but instead use one of its corresponding interpretation functions.Deffet;Runs the embed effect by transforming the integrated monad n into another integrated monad t.Deffet&The natural transformation from monad n to monad t.effet1The program whose embed effect should be handled.effet*The program with its embed effect handled.ABCDABCD(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk1Qeffet>An effect that adds an abortive continuation to a computation.ReffetAdapted from the mtl library documentation:callCC'/ (call-with-current-continuation) calls a function with the current continuation as its argument. Provides an escape continuation mechanism for use with continuation monads. Escape continuations allow to abort the current computation and return a value immediately. They achieve a similar result to  and  of the 2 effect. Advantage of this function over calling return[ is that it makes the continuation explicit, allowing more flexibility and better control.The standard idiom used with callCC' is to provide a lambda-expression to name the continuation. Then calling the named continuation anywhere within its scope will escape from the computation, even if it is many layers deep within nested computations.Yeffet=Runs the continuation effect with a given final continuation.ZeffetThe untagged version of Y.[effet"Runs the continuation effect with q as final continuation.\effetThe untagged version of [. QRTUVWXYZ[\ QRTXYZ[\UVW (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkQ `effetSAn effect that adds a mutable collection of key-value pairs to a given computation.aeffet)Deletes all key-value pairs from the map.beffet?Searches for a value that corresponds to a given key. Returns r if the key cannot be found.ceffet<Updates the value that corresponds to a given key. Passing r> as the updated value removes the key-value pair from the map.keffet7Deletes a key and its corresponding value from the map.leffetThe untagged version of k.meffet'Checks if the map contains a given key.neffetThe untagged version of m.oeffetInserts a new key-value pair into the map. If the key is already present in the map, the associated value is replaced with the new value.peffetThe untagged version of o.qeffetyUpdates the value that corresponds to a given key. If the key cannot be found, a corresponding default value is assumed.reffetThe untagged version of q.qeffet8The default value that is assumed if the key is missing.effetoThe function for updating the value. This function is also applied to the default value if the key is missing.effet-The key whose corresponding value is updated.effet The operation produces no value.`abcdefghijklmnopqr`abcdhijklmnopqrefg (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk_veffetBThe lazy interpreter of the map effect. This type implements the ` type class in a lazy manner.When interpreting the effect, you usually don't interact with this type directly, but instead use one of its corresponding interpretation functions.weffet3Runs the map effect, initialized with an empty map.xeffetThe untagged version of w.weffet/The program whose map effect should be handled.effet(The program with its map effect handled.vwxvwx (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkeffetDThe strict interpreter of the map effect. This type implements the ` type class in a strict manner.When interpreting the effect, you usually don't interact with this type directly, but instead use one of its corresponding interpretation functions.effet3Runs the map effect, initialized with an empty map.effetThe untagged version of .effet/The program whose map effect should be handled.effet(The program with its map effect handled. (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkeffetAn effect that adds an immutable state (i.e., an "environment") to a given computation. The effect allows to read values from the environment, pass values from function to function, and execute sub-computations in a modified environment.effetGets the environment.effet5Executes a sub-computation in a modified environment.effetUGets a specific component of the environment, using the provided projection function.effetUGets a specific component of the environment, using the provided projection function.effetThe untagged version of .effetRuns the reader effect.effetThe untagged version of .effet'The function to modify the environment.effet7The sub-computation to run in the modified environment.effet"The result of the sub-computation.effet4The projection function to apply to the environment.effetThe result of the projection.effet4The projection function to apply to the environment.effetThe result of the projection.effetThe initial environment.effet2The program whose reader effect should be handled.effet+The program with its reader effect handled. (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk effetqAn effect that allows a computation to allocate resources which are guaranteed to be released after their usage.effetFAcquire a resource, use it, and then release the resource after usage.effetLike Z, but only performs the release computation if the usage computation throws an exception.effetKThe IO-based interpreter of the resource effect. This type implements the  type class by using s, thus requiring p/ at the bottom of the monad transformer stack.When interpreting the effect, you usually don't interact with this type directly, but instead use one of its corresponding interpretation functions.effetA simpler version of ; where one computation is guaranteed to run after another.effetThe untagged version of .effetA simpler version of m where one computation is guaranteed to run after another in case the first computation throws an exception.effetThe untagged version of .effetRuns the resource effect using s.effetThe untagged version of .effet,The computation which acquires the resource.effet,The computation which releases the resource.effet(The computation which uses the resource.effet6The result of the computation which used the resource.effet,The computation which acquires the resource.effet,The computation which releases the resource.effet(The computation which uses the resource.effet6The result of the computation which used the resource.effetThe computation to run.effetXThe computation to run afterwards, even if the first computation throws an exception.effet$The result of the first computation.effetThe computation to run.effetXThe computation to run afterwards, only if the first computation throws an exception.effet$The result of the first computation.(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk effet;An effect that adds a mutable state to a given computation.effetGets the current state.effet$Replaces the state with a new value.effetBUpdates the state and produces a value based on the current state.effetOGets a specific component of the state, using the provided projection function.effetThe untagged version of .effet0Modifies the state, using the provided function.effetThe untagged version of .effet]Modifies the state, using the provided function. The computation is strict in the new state.effetThe untagged version of .(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk,{effet3Runs the state effect and discards the final state.effetThe untagged version of .effetIRuns the state effect and discards the result of the interpreted program.effetThe untagged version of .effetaRuns the state effect and returns both the final state and the result of the interpreted program.effetThe untagged version of .effetThe initial state.effet1The program whose state effect should be handled.effet*The program with its state effect handled.effetThe initial state.effet1The program whose state effect should be handled.effetEThe program with its state effect handled, producing the final state s.effetThe initial state.effet1The program whose state effect should be handled.effetEThe program with its state effect handled, producing the final state s and the result a.(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk;effet3Runs the state effect and discards the final state.effetThe untagged version of .effet2Runs the state effect and returns the final state.effetThe untagged version of .effetaRuns the state effect and returns both the final state and the result of the interpreted program.effetThe untagged version of .effetThe initial state.effet1The program whose state effect should be handled.effet*The program with its state effect handled.effetThe initial state.effet1The program whose state effect should be handled.effetEThe program with its state effect handled, producing the final state s.effetThe initial state.effet1The program whose state effect should be handled.effetEThe program with its state effect handled, producing the final state s and the result a.(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkKeffetLAn effect that adds a write-only, accumulated output to a given computation.effetProduces the output w. In other words, w' is appended to the accumulated output.effet'Executes a sub-computation and appends w to the accumulated output.effetBExecutes a sub-computation and applies the function to its output.effetExecutes a sub-computation and applies the function to its output, thus adding an additional value to the result of the sub-computation.effetThe untagged version of .effet,The function which is applied to the output.effet7The sub-computation which produces the modified output.effet"The result of the sub-computation.effet,The function which is applied to the output.effet7The sub-computation which produces the modified output.effetAThe result of the sub-computation, including the modified output. (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkt;effetBAn effect that adds the following features to a given computation:0(R) an immutable environment (the "reader" part)8(W) a write-only, accumulated output (the "writer" part)&(S) a mutable state (the "state" part)effetGets the environment.effet5Executes a sub-computation in a modified environment.effetProduces the output w. In other words, w' is appended to the accumulated output.effet'Executes a sub-computation and appends w to the accumulated output.effetBExecutes a sub-computation and applies the function to its output.effetGets the current state.effet$Replaces the state with a new value.effetGThe separation interpreter of the RWS effect. This type implements the 3 type class by splitting the effect into separate ,  and 4 effects which can then be interpreted individually.When interpreting the effect, you usually don't interact with this type directly, but instead use one of its corresponding interpretation functions.effetUGets a specific component of the environment, using the provided projection function.effetThe untagged version of . effetExecutes a sub-computation and applies the function to its output, thus adding an additional value to the result of the sub-computation. effetThe untagged version of  . effetOGets a specific component of the state, using the provided projection function. effetThe untagged version of  . effet0Modifies the state, using the provided function.effetThe untagged version of  .effet]Modifies the state, using the provided function. The computation is strict in the new state.effetThe untagged version of .effet#Runs the RWS effect via separation.effetThe untagged version of .effet'The function to modify the environment.effet7The sub-computation to run in the modified environment.effet"The result of the sub-computation.effet,The function which is applied to the output.effet7The sub-computation which produces the modified output.effet"The result of the sub-computation.effet4The projection function to apply to the environment.effetThe result of the projection. effet,The function which is applied to the output.effet7The sub-computation which produces the modified output.effetAThe result of the sub-computation, including the modified output.effet/The program whose RWS effect should be handled.effet(The program with its RWS effect handled."     "     (c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk!effetDThe strict interpreter of the RWS effect. This type implements the  type class in a strict manner.When interpreting the effect, you usually don't interact with this type directly, but instead use one of its corresponding interpretation functions."effet1Runs the RWS effect and discards the final state.#effetThe untagged version of ".$effetGRuns the RWS effect and discards the result of the interpreted program.%effetThe untagged version of $.&effetlRuns the RWS effect and returns the final output, the final state and the result of the interpreted program.'effetThe untagged version of &."effetThe initial environment.effetThe initial state.effet/The program whose RWS effect should be handled.effetEThe program with its RWS effect handled, producing the final output w and the result a.$effetThe initial environment.effetThe initial state.effet/The program whose RWS effect should be handled.effetEThe program with its RWS effect handled, producing the final output w and the final state s.&effetThe initial environment.effetThe initial state.effet/The program whose RWS effect should be handled.effetEThe program with its RWS effect handled, producing the final output w, the final state s and the result a.!"#$%&'!"$&#%'(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXkq1effet1Runs the RWS effect and discards the final state.2effetThe untagged version of 1.3effetGRuns the RWS effect and discards the result of the interpreted program.4effetThe untagged version of 3.5effetlRuns the RWS effect and returns the final output, the final state and the result of the interpreted program.6effetThe untagged version of 5.1effetThe initial environment.effetThe initial state.effet/The program whose RWS effect should be handled.effetEThe program with its RWS effect handled, producing the final output w and the result a.3effetThe initial environment.effetThe initial state.effet/The program whose RWS effect should be handled.effetEThe program with its RWS effect handled, producing the final output w and the final state s.5effetThe initial environment.effetThe initial state.effet/The program whose RWS effect should be handled.effetEThe program with its RWS effect handled, producing the final output w, the final state s and the result a.123456135246(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXks7effet4Runs the writer effect and returns the final output.8effetThe untagged version of 7.9effetcRuns the writer effect and returns both the final output and the result of the interpreted program.:effetThe untagged version of 9.7effet2The program whose writer effect should be handled.effetGThe program with its writer effect handled, producing the final output w.9effet2The program whose writer effect should be handled.effetGThe program with its writer effect handled, producing the final output w and the result a.789:798:(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportableNone,-.;<=>?@ACHMSUVXk};effetGThe strict interpreter of the writer effect. This type implements the  type class in a strict manner.When interpreting the effect, you usually don't interact with this type directly, but instead use one of its corresponding interpretation functions.<effet4Runs the writer effect and returns the final output.=effetThe untagged version of <.>effetcRuns the writer effect and returns both the final output and the result of the interpreted program.?effetThe untagged version of >.<effet2The program whose writer effect should be handled.effetGThe program with its writer effect handled, producing the final output w.>effet2The program whose writer effect should be handled.effetGThe program with its writer effect handled, producing the final output w and the result a.;<=>?;<>=?None,-.;<=>?@ACHMSUVXktuvwxyz{| !"#$%&'()*+,-.//0123456789::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx y z { | } ~                !"#$%&'($%&')*+,-./0123456789:8;<8;=23>?@A?@B56C56D56E56F56G56H56I56J56[56K56L56M56N56O56P56Q56R56S56T56U56V56W56X56Y56Z56[56\56]56^?@_8`abcd89e8fg8hijklmnopqeffet-0.1.0.0-inplace Control.Effect.Machinery.DefaultControl.Effect.Machinery.KindControl.Effect.Machinery.TaggerControl.Effect.Machinery.ViaControl.Effect.Machinery.THControl.Effect.ErrorControl.Effect.EmbedControl.Effect.ContControl.Effect.MapControl.Effect.Map.LazyControl.Effect.Map.StrictControl.Effect.ReaderControl.Effect.ResourceControl.Effect.StateControl.Effect.State.LazyControl.Effect.State.StrictControl.Effect.WriterControl.Effect.RWSControl.Effect.RWS.StrictControl.Effect.RWS.LazyControl.Effect.Writer.LazyControl.Effect.Writer.StrictReader'local'State'Control.Effect.Machinery throwError' catchError'Error' Paths_effetDefault runDefault$fMonadTransControlDefault$fMonadTransDefault$fApplicativeDefault$fFunctorDefault$fMonadDefault$fMonadIODefault$fMonadBaseDefault$fMonadBaseControlDefaultControlLiftHandle TransformerEffect SomeMonadTagger runTagger$fApplicativeTagger$fFunctorTagger $fMonadTagger$fMonadIOTagger$fMonadTransTagger$fMonadTransControlTagger$fMonadBaseTagger$fMonadBaseControlTaggerGViarunVia$fMonadBaseControlbVia$fMonadBasebVia$fApplicativeVia $fFunctorVia $fMonadVia $fMonadIOVia$fMonadTransVia$fMonadTransControlViaremoveApostrophe makeEffect makeTaggermakeTaggerWithmakeTaggedEffectmakeTaggedEffectWith makeHandler makeLifterError tagError' retagError' untagError' throwError catchError liftEither' liftEither runError'runError$fError'ktageExceptT$fError'ktageTagger$fError'ktageVia$fError'ktageVia0EmbedembedTransformationrunEmbed $fEmbedmm $fEmbednVia $fEmbednVia0$fEmbednTransformation$fApplicativeTransformation$fFunctorTransformation$fMonadTransformation$fMonadIOTransformation$fMonadTransTransformation!$fMonadTransControlTransformation$fMonadBaseTransformation $fMonadBaseControlTransformationCont'callCC'$fCont'ktagViaConttagCont' retagCont' untagCont'callCCrunCont'runCont evalCont'evalCont$fCont'ktagContT$fCont'ktagVia0$fCont'ktagTaggerMap'clear'lookup'update'MaptagMap' retagMap' untagMap'clearlookupupdatedelete'deleteexists'existsinsert'insertmodify'modify$fMap'ktagkvTagger$fMap'ktagkvVia$fMap'ktagkvVia0LazyMaprunMap'runMap$fMap'ktagkvLazyMap$fApplicativeLazyMap$fFunctorLazyMap$fMonadLazyMap$fMonadIOLazyMap$fMonadTransLazyMap$fMonadTransControlLazyMap$fMonadBaseLazyMap$fMonadBaseControlLazyMap StrictMap$fMap'ktagkvStrictMap$fApplicativeStrictMap$fFunctorStrictMap$fMonadStrictMap$fMonadIOStrictMap$fMonadTransStrictMap$fMonadTransControlStrictMap$fMonadBaseStrictMap$fMonadBaseControlStrictMapask'reader'Reader tagReader' retagReader' untagReader'asklocalreaderasks'asks runReader' runReader$fReader'ktagrReaderT$fReader'ktagrTagger$fReader'ktagrVia$fReader'ktagrVia0 Resource'bracket'bracketOnError'LowerIOResource tagResource'retagResource'untagResource'bracketbracketOnErrorfinally'finally onException' onExceptionrunResourceIO' runResourceIO$fResource'ktagTagger$fResource'ktagVia$fResource'ktagVia0$fResource'ktagLowerIO$fApplicativeLowerIO$fFunctorLowerIO$fMonadLowerIO$fMonadIOLowerIO$fMonadTransLowerIO$fMonadTransControlLowerIO$fMonadBaseLowerIO$fMonadBaseControlLowerIOget'put'state'State tagState' retagState' untagState'getputstategets'gets modifyStrict' modifyStrict$fState'ktagsStateT$fState'ktagsStateT0$fState'ktagsTagger$fState'ktagsVia$fState'ktagsVia0 evalState' evalState execState' execState runState'runStateWriter'tell'listen'censor'Writer tagWriter' retagWriter' untagWriter'telllistencensorlistens'listens$fWriter'ktagwWriterT$fWriter'ktagwWriterT0$fWriter'ktagwTagger$fWriter'ktagwVia$fWriter'ktagwVia0RWS' Separation runSeparationRWStagRWS' retagRWS' untagRWS'runSeparatedRWS'runSeparatedRWS$fRWS'ktagrwsRWST$fRWS'ktagrwsRWST0$fRWS'ktagrwsTagger$fRWS'ktagrwsVia$fRWS'ktagrwsVia0$fRWS'ktagrwsSeparation$fApplicativeSeparation$fFunctorSeparation$fMonadSeparation$fMonadIOSeparation$fMonadTransSeparation$fMonadTransControlSeparation$fMonadBaseSeparation$fMonadBaseControlSeparationRWSTevalRWS'evalRWSexecRWS'execRWSrunRWS'runRWS$fMonadTransControlRWST$fMonadBaseControlbRWST$fMonadBasebRWST$fApplicativeRWST $fFunctorRWST $fMonadRWST $fMonadIORWST$fMonadTransRWST $fRWS'RWST execWriter' execWriter runWriter' runWriterWriterT$fMonadTransControlWriterT$fMonadBaseControlbWriterT$fMonadBasebWriterT$fApplicativeWriterT$fFunctorWriterT$fMonadWriterT$fMonadIOWriterT$fMonadTransWriterT$fWriter'WriterTtransformers-0.5.6.2Control.Monad.Trans.Class MonadTrans>monad-control-1.0.2.3-87f8be1a3d1d2b49299f7f0dfa3b0caa757f3b8bControl.Monad.Trans.ControlMonadTransControlbaseGHC.BaseMonadControl.Monad.IO.ClassMonadIOliftIOlift?transformers-_-0.4.5.2-c12d3fc64534cfdd801303705711124d4ca07870Control.Monad.Base MonadBaseliftBase liftThroughliftBaseOpDiscardliftBaseDiscard liftBaseOp_ liftBaseOpcaptureMcaptureTembed_controldefaultRestoreMdefaultLiftBaseWithdefaultRestoreT2defaultLiftWith2defaultRestoreTdefaultLiftWithStTliftWithrestoreTRun RunDefault RunDefault2StMMonadBaseControl liftBaseWithrestoreM RunInBase ComposeStRunInBaseDefaultliftBaseDefault Data.EitherEitherghc-prim GHC.TypesIOpure GHC.MaybeNothingControl.Exception.Baseversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName