^YG      !"#$%&'()*+,-./0123456789 : ; < = > ? @ A B C D E F 9Fast type-aligned queue optimized to effectful functions.Alej Cabrera 2015BSD-3cpp.cabrera@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)] GH   GH >Open unions (type-indexed co-products) for extensible effects.Alej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone!"&'(3457>KLNIJKLMNOPQR STUVW  IJKLMNOPQR  STUVWMechanisms to make effects workAlej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone !"(4>IKLN 3A data type for representing nondeterminstic choiceThe 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 aAn 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 rFFunction 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 well#send a request and wait for a replyRuns a set of Effects. Requires that all effects are consumed. Typically composed as follows: > run . runEff1 eff1Arg . runEff2 eff2Arg1 eff2Arg2 (program)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 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!%A handler for nondeterminstic effects !"XYZ[\  !" !"  !"XYZ[\#Composable coroutine effects layer.Alej Cabrera 2015BSD-3cpp.cabrera@gmail.combrokenPOSIXNone(-4KL#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#$%&]'(#$%&'(&'#$%(#$%&]'( An Exception effect and handler.Alej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone(4KL)'Exceptions of the type e; no resumption+.Throws an error carrying information of type e,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.-FA catcher for Exceptions. Handlers are allowed to rethrow exceptions.)*+,-)*+,-)*+,-)*+,- An implementation of logical CutAlej Cabrera 2015BSD-3cpp.cabrera@gmail.combrokenPOSIXNone(4KL/0Implementation of logical Cut using Exc effects..^/././.^/*Generation of fresh integers as an effect.Alej Cabrera 2015BSD-3cpp.cabrera@gmail.combrokenPOSIXNone!"(4KL0Fresh effect model1Request a fresh effect2;Handler for Fresh effects, with an Int for a starting value0_120120120_120Reader effects, for encapsulating an environmentAlej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone !"(4KLN5#Request a value for the environment6;Request a value from the environment and applys as function7Handler for reader effects8Locally 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 them345678345678345678345678 /State effects, for state-carrying computations.Alej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone !"(4KLN9;Strict State effects: one can either Get values or Put them:Retrieve state; Store state< Modify state=Handler for State effects>An encapsulated State handler, for transactional semantics The global state is updated only if the transactionState finished successfully9`a:;<=>9:;<=>9:;<=>9`a:;<=> Composable Writer effects -Alej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone!"(4KL?6Writer effects - send outputs to an effect environmentA)Send a change to the attached environmentB!Simple handler for Writer effects?@AB?@AB?@AB?@AB 'State effects in terms of Reader/WriterAlej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone!"(4KLC*State handler, using Reader/Writer effectsC35?ACC3?A5C Composable Trace effectsAlej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone!"(4KLD2A Trace effect; takes a String and performs outputEPrinting a string in a traceFAn IO handler for Trace effectsDbEFDEFDEFDbEF %Freer - an extensible effects libraryAlej Cabrera 2015BSD-3cpp.cabrera@gmail.com experimentalPOSIXNone !" !"c !"#$%&'()*+,-./01234567789:;<=>?@@ABCD E F G H I J K K L M N O P QRSTUVWXYYZ[\]^_`abcdef4;= g h Oifreer_LOcgftGQlEW4S3aROWE6SS Data.FTCQueueData.Open.UnionControl.Monad.Freer.InternalControl.Monad.Freer.CoroutineControl.Monad.Freer.ExceptionControl.Monad.Freer.CutControl.Monad.Freer.FreshControl.Monad.Freer.ReaderControl.Monad.Freer.StateControl.Monad.Freer.WriterControl.Monad.Freer.StateRWControl.Monad.Freer.TraceControl.Monad.FreerViewLTOne:|FTCQueue tsingleton|>snoc><appendtviewlMembersMemberinjprjUniondecompweaken NonDetEffMZeroMPlusEffValEArrsArrqAppqCompsendrunrunM handleRelay handleRelayS interpose makeChoiceAmsplitStatusDoneContinueYieldyieldrunCExc throwErrorrunError catchErrorCutFalsecutFalseFreshfresh runFresh'Readeraskasks runReaderlocalStategetputmodifyrunStatetransactionStateWritertell runWriter runStateRTracetracerunTraceLeafNodeEQUFindElemMember'inj'prj'PNatSZUNowUNext $fMember'trS $fMember'trZ $fMembertr$fMonadPlusEff$fAlternativeEff $fMonadEff$fApplicativeEff $fFunctorEffGetPut