úΨì£d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI J K L M N O P Q R S T U V W X Y Z[\]^_`abc>Open unions (type-indexed co-products) for extensible effects.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None%&+,9:;<=DQRT3This type class is used for two following purposes:As a  Constraint it guarantees that  t :: * -> * is a member of a type-list  r :: [* -> *].%Provides a way how to inject/project  t :: * -> * into/from a , respectively.Following law has to hold:  .  === d Takes a request of type  t :: * -> *, and injects it into the .O(1)Project a value of type  (t ': r) :: * -> *& into a possible summand of the type  t :: * -> *. e means that  t :: * -> *! is not the value stored in the  (t ': r) :: * -> *.O(1)Find an index of an element  t :: * -> * in a type list  r :: [* -> *]. The element must exist.IThis is essentially a compile-time computation without run-time overhead.Position of the element  t :: * -> * in a type list  r :: [* -> *].MPosition is computed during compilation, i.e. there is no run-time overhead.O(1)Represents position of element  t :: * -> * in a type list  r :: [* -> *].:Open union is a strong sum (existential with an evidence). Takes a request of type  t :: * -> *, and injects it into the .!Summand is assigning a specified f. value, which is a position in the type-list (t ': r) :: * -> *.This function is unsafe.O(1) Project a value of type  (t ': r) :: * -> *& into a possible summand of the type  t :: * -> *. e means that  t :: * -> *! is not the value stored in the  (t ': r) :: * -> *.,It is assumed that summand is stored in the  when the f. value is the same value as is stored in the .This function is unsafe.O(1) Orthogonal decomposition of a  (t ': r) :: * -> *. g value is returned if the  (t ': r) :: * -> * contains  t :: * -> *, and h when it doesn't. Notice that h value contains Union r :: * -> *, i.e. it can not contain  t :: * -> *.O(1) Specialized version of   for efficiency.O(1)0TODO: Check that it actually adds on efficiency.Specialised version of 'prj'\/'decomp' that works on an  '[t] :: * -> *A which contains only one specific summand. Hence the absence of i, and j.O(1) Inject whole  r into a weaker  (any ': r) that has one more summand.O(1)QRecursion; element is not at the current position, but is somewhere in the list.:Base case; element is at the current position in the list.      >Open unions (type-indexed co-products) for extensible effects.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None%&*+,9:;<=DQRT  9Fast type-aligned queue optimized to effectful functions.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.Safe%&(Left view deconstruction data structure.MNon-empty tree. Deconstruction operations make it more and more left-leaning,Build a leaf from a single operation. [O(1)]4Append an operation to the right of the tree. [O(1)]An alias for '(|>)'&Append two trees of operations. [O(1)]An alias for '(><)'(Left view deconstruction. [average O(1)] kl  kl Mechanisms to make effects work.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None %&,:DOQRT4A data type for representing nondeterminstic choice.!§The Eff monad provides a way to use effects in Haskell, in such a way that different types of effects can be interleaved, and so that the produced code is efficient." Pure value (m = n = ").#Sending a request of type  Union effs with the continuation $ r b a.$An effectful function from a :: * to b :: *F that is a composition of several effectful functions. The paremeter eff :: [* -> *]a describes the overall effect. The composition members are accumulated in a type-aligned queue.%&Effectful arrow type: a function from a :: * to b :: *$ that also does effects denoted by effs :: [* -> *].&=Function application in the context of an array of effects, $ effs b w.'!Composition of effectful arrows ($D). Allows for the caller to change the effect environment, as well.($Send a request and wait for a reply.)^Runs a set of Effects. Requires that all effects are consumed. Typically composed as follows: )= . runEff1 eff1Arg . runEff2 eff2Arg1 eff2Arg2 $ someProgram *âRuns a set of Effects. Requires that all effects are consumed, except for a single effect known to be a monad. The value returned is a computation in that monad. This is useful for plugging in traditional transformer stacks.+.Given a request, either handle it or relay it.,Parameterized ++. Allows sending along some state of type s :: *b to be handled for the target effect, or relayed to a handler that can- handle the target effect.-GIntercept the request and possibly reply to it, but leave it unhandled. !"#$%&'()*+Handle a pure value.$Handle a request for effect of type  eff :: * -> *.Result with effects of type  eff :: * -> * handled.,Handle a pure value.$Handle a request for effect of type  eff :: * -> *.Result with effects of type  eff :: * -> * handled.-./012"  !#"$%&'()*+,-!"#%$()*+,-&'  !"#$%&'()*+,-./012Non deterministic effects2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None,:DQR3&A handler for nondeterminstic effects.34 34 34341Reader effects, for encapsulating an environment.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None %&,:QRT50Represents shared immutable environment of type (e :: *)3 which is made available to effectful computation.7#Request a value of the environment.8URequest a value of the environment, and apply as selector/projection function to it.9 Handler for 5 effects.:4Locally rebind the value in the dynamic environment.7This function is like a relay; it is both an admin for 5$ requests, and a requestor of them.5678BThe selector/projection function to be applied to the environment.9:56789:5678:956789:/State effects, for state-carrying computations.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None %&,:QRT;Strict ; effects: one can either < values or = them.>0Retrieve the current value of the state of type s :: *.?3Set the current state to a specified value of type s :: *.@!Modify the current state of type s :: * using provided function (s -> s).A Handler for ; effects.BRun a ;( effect, returning only the final state.C/Run a State effect, discarding the final state.DeAn encapsulated State handler, for transactional semantics. The global state is updated only if the D finished successfully. ;<=>?@ABCD ;<=>?@ABCD ;<=>?@ACBD;<=>?@ABCDComposable Trace effects.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None%&,:QREA Trace effect; takes a o and performs output.GPrinting a string in a trace.HAn p handler for E effects.EFGHEFGHEFGHEFGH Composable Writer effects.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None%&,:QRI7Writer effects - send outputs to an effect environment.K*Send a change to the attached environment.LSimple handler for I effects.IJKLIJKLIJKLIJKL ,State effects in terms of Reader and Writer.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None%&,:QRMState handler, using 5 and I effects.M57IKMM5IK7M *Generation of fresh integers as an effect.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.combroken!GHC specific language extensions.None%&,:QRNFresh effect model.PRequest a fresh effect.Q Handler for N effects, with an q for a starting value.NOPQNOPQNOPQNOPQ  An Exception effect and handler.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None,:QRRExceptions of the type e :: * with no resumption.T-Throws an error carrying information of type e :: *.UKHandler for exception effects. If there are no exceptions thrown, returns g4. If exceptions are thrown and not handled, returns hA, while interrupting the execution of any other effect handlers.VEA catcher for Exceptions. Handlers are allowed to rethrow exceptions.RSTUVRSTUVRSTUVRSTUV !An implementation of logical Cut.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.combroken!GHC specific language extensions.None,:QRY0Implementation of logical Cut using Exc effects.WXYWXYWXYWXY#Composable coroutine effects layer.2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.combroken!GHC specific language extensions.None,2:QRZ!Represents status of a coroutine.[Coroutine is done.\Reporting a value of the type a', and resuming with the value of type b.]*A type representing a yielding of control.&Type variables have following meaning: aThe current type.b'The input to the continuation function.cThe output of the continuation._7Lifts a value and a function into the Coroutine effect.`)Launch a coroutine and report its status.Z[\]^_`Z[\]^_`]^_Z[\`Z[\]^_`%Freer - an extensible effects library2(c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.BSD3ixcom-core@ixperta.com experimental!GHC specific language extensions.None,OQRTb Variant of + simplified for the common case.c Variant of , simplified for the common case.bc !%()*+,bc !(%)*bc+,bcr !"#$%&'()*+,-./0123456789:;<=>?@ABCCDEFGHIJKLMNOPQRRST U U V W X Y Y Z [ \ \ ] ^ _ ` ` abcdeefghijklmklnopqkrskrtklukrvwxklyklzkl{op|op}~,freer-effects-0.3.0.0-Ivbl81xmUoA87iK9MKiyHCData.OpenUnion.InternalData.OpenUnion Data.FTCQueueControl.Monad.Freer.InternalControl.Monad.Freer.NonDetControl.Monad.Freer.ReaderControl.Monad.Freer.StateControl.Monad.Freer.TraceControl.Monad.Freer.WriterControl.Monad.Freer.StateRWControl.Monad.Freer.FreshControl.Monad.Freer.ExceptionControl.Monad.Freer.CutControl.Monad.Freer.CoroutineControl.Monad.FreerMemberinjprjFindElemelemNoPunPUnion unsafeInj unsafePrjdecompdecomp0extractweaken $fMembertr $fFindElemt: $fFindElemt:0MembersViewLTOne:|FTCQueue tsingleton|>snoc><appendtviewlNonDetMZeroMPlusEffValEArrsArrqAppqCompsendrunrunM handleRelay handleRelayS interpose$fMonadPlusEff$fAlternativeEff $fMonadEff$fApplicativeEff $fFunctorEff makeChoiceAmsplitReaderaskasks runReaderlocalStateGetPutgetputmodifyrunState execState evalStatetransactionStateTracetracerunTraceWritertell runWriter runStateRFreshfresh runFresh'Exc throwErrorrunError catchErrorCutFalsecutFalseStatusDoneContinueYieldyieldrunC$fFunctorYieldrunNatrunNatSbaseGHC.BaseJustNothingghc-prim GHC.TypesWord Data.EitherRightLeftMaybeEitherLeafNodereturnpureStringIOInt