úÎaÍ\Vc      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP Q R S T U V W X Y Z [ \ ] ^ _ ` a bSafe%&+,9:;<=DQRT       >Open unions (type-indexed co-products) for extensible effects.Allele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone%&*+,9:;<=DQRT  9Fast type-aligned queue optimized to effectful functions.Allele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXSafe%&'Left view deconstruction data structureMNon-empty tree. Deconstruction operations make it more and more left-leaning +Build a leaf from a single operation [O(1)]!3Append 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)] cd !"#$%  !"#$%  !"#$%cd !"#$%Mechanisms to make effects workAllele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone %&,:DOQRT &3A data type for representing nondeterminstic choice)The Eff representation.Status of a coroutine (client): * Val: Done with the value of type a * E : Sending a request of type Union r with the continuation Arrs r b a,An effectful function from a to b¨ that is a composition of several effectful functions. The paremeter r describes the overall effect. The composition members are accumulated in a type-aligned queue.-QEffectful arrow type: a function from a to b that also does effects denoted by r.FFunction application in the context of an array of effects, Arrs r b w/`Composition of effectful arrows Allows for the caller to change the effect environment, as well0#send a request and wait for a reply1Runs a set of Effects. Requires that all effects are consumed. Typically composed as follows: > run . runEff1 eff1Arg . runEff2 eff2Arg1 eff2Arg2 (program)2ã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.3.Given a request, either handle it or relay it.4Parameterized 3‚ Allows sending along some state to be handled for the target effect, or relayed to a handler that can handle the target effect.5GIntercept the request and possibly reply to it, but leave it unhandled6%A handler for nondeterminstic effects&'()*+,-./0123456789:;< &'()+*,-./01234567)*+-,&'(67 ./012345&'()*+,-./0123456789:;<0Reader effects, for encapsulating an environmentAllele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone %&,:QRT?#Request a value for the environment@;Request a value from the environment and applys as functionAHandler for reader effectsB•Locally rebind the value in the dynamic environment This function is like a relay; it is both an admin for Reader requests, and a requestor of them=>?@AB=>?@AB=>?@AB=>?@AB/State effects, for state-carrying computations.Allele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone %&,:QRTC;Strict State effects: one can either Get values or Put themDRetrieve stateE Store stateF Modify stateGHandler for State effectsH‹An encapsulated State handler, for transactional semantics The global state is updated only if the transactionState finished successfullyCefDEFGHCDEFGHCDEFGHCefDEFGHComposable Trace effectsAllele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone%&,:QRI2A Trace effect; takes a String and performs outputJPrinting a string in a traceKAn IO handler for Trace effectsIgJKIJKIJKIgJKComposable Writer effects -Allele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone%&,:QRL6Writer effects - send outputs to an effect environmentN)Send a change to the attached environmentO!Simple handler for Writer effectsLMNOLMNOLMNOLMNO 'State effects in terms of Reader/WriterAllele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone%&,:QRP*State handler, using Reader/Writer effectsP=?LNPP=LN?P *Generation of fresh integers as an effect.Allele Dev 2016BSD-3allele.dev@gmail.combrokenPOSIXNone%&,:QRQFresh effect modelRRequest a fresh effectS;Handler for Fresh effects, with an Int for a starting valueQhRSQRSQRSQhRS  An Exception effect and handler.Allele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone,:QRT'Exceptions of the type e; no resumptionV.Throws an error carrying information of type eWÂHandler for exception effects If there are no exceptions thrown, returns Right If exceptions are thrown and not handled, returns Left, interrupting the execution of any other effect handlers.XFA catcher for Exceptions. Handlers are allowed to rethrow exceptions.TUVWXTUVWXTUVWXTUVWX  An implementation of logical CutAllele Dev 2016BSD-3allele.dev@gmail.combrokenPOSIXNone,:QRZ0Implementation of logical Cut using Exc effects.YiZYZYZYiZ #Composable coroutine effects layer.Allele Dev 2016BSD-3allele.dev@gmail.combrokenPOSIXNone,2:QR[dStatus of a thread: done or reporting the value of the type a and resuming with the value of type b^ŒA type representing a yielding of control a: The current type b: The input to the continuation function v: The output of the continuation_6Lifts a value and a function into the Coroutine effect`%Launch a thread and report its status[\]^j_`[\]^_`^_[\]`[\]^j_`%Freer - an extensible effects libraryAllele Dev 2016BSD-3allele.dev@gmail.com experimentalPOSIXNone,OQRTb&'()-0123467b)12b340-&'(67bk !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXYZ[[\] ^ _ ` a b b c d e f g h i j k l m nopqrsX _ f kt$freer-0.2.4.0-7t9E1lnQm36L5p76iC30t7Data.Open.UnionData.Open.Union.Internal Data.FTCQueueControl.Monad.Freer.InternalControl.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.FreerbaseGHC.BasefmapFunctor<$MemberinjprjEQUFindElemMember'inj'prj'PNatSZUnionUNowUNextdecompweakenextract$fFunctorUnion$fFunctorUnion0 $fMembertr $fMember'trS $fMember'trZMembersViewLTOne:|FTCQueue tsingleton|>snoc><appendtviewl NonDetEffMZeroMPlusEffValEArrsArrqAppqCompsendrunrunM handleRelay handleRelayS interpose makeChoiceAmsplit$fMonadPlusEff$fAlternativeEff $fMonadEff$fApplicativeEff $fFunctorEffReaderaskasks runReaderlocalStategetputmodifyrunStatetransactionStateTracetracerunTraceWritertell runWriter runStateRFreshfresh runFresh'Exc throwErrorrunError catchErrorCutFalsecutFalseStatusDoneContinueYieldyieldrunC$fFunctorYieldrunNatLeafNodeGetPut