|      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SafeQV L$Isomorphsm between m and (Kleisli m)(Isomorphism between (ArrowMonad a) and a   Trustworthy"#&';<=>?AFKNQV^I#2A monad type represents time evolution of ProcessT()Occasional signals with creation methods.*Signals that can be absent($) or end. For composite structure, +8 can be defined as monoid sum of all member occasionals.,MDiscrete events on a time line. Created and consumed by various transducers.-Isomorphic to ProcessT when a is ArrowApply..The stream transducer arrow. To construct . instances, use  , , functions declared in   !, or arrow combinations of them.See an introduction at Control.Arrow.Machine documentation.*To get multiple outputs by one input, the  parameter is introduced. Once a value ed, the machine is  ed until it s./Natural transformation0Experimental: more general fit.Should w be a comonad?6Composition is proceeded by the backtracking strategy.6Split an event stream.3run (filterLeft) [Left 1, Right 2, Left 3, Right 4][1,3]7Split an event stream.2run filterRight [Left 1, Right 2, Left 3, Right 4][2,4]8Split an event stream.?run (splitEvent >>> arr fst) [Left 1, Right 2, Left 3, Right 4][1,3]?run (splitEvent >>> arr snd) [Left 1, Right 2, Left 3, Right 4][2,4]9Alias of "arr . fmap"While "ProcessT a (Event b) (Event c)" means a transducer from b to c, function b->c can be lifted into a transducer by fhis function.PBut in most cases you needn't call this function in proc-do notations, because /s are completed automatically while desugaring. For example, proc x -> returnA -< f <$> x is equivalent to evMap f DPRun the 1st transducer at the beggining. Then switch to 2nd when Event t occurs.:{ let before = proc x -> do* trigger <- filterEvent (== 3) -< x) returnA -< ((*10) <$> x, trigger)/ after t = proc x -> returnA -< (*100) <$> x in$ run (switch before after) [1..5]:}[10,20,300,400,500]EDelayed version of D:{ let before = proc x -> do* trigger <- filterEvent (== 3) -< x) returnA -< ((*10) <$> x, trigger)/ after t = proc x -> returnA -< (*100) <$> x in% run (dSwitch before after) [1..5]:}[10,20,30,400,500]FRecurring switch.:{let pa = proc evtp -> do& evx <- returnA -< fst <$> evtp+ evarr <- filterJust -< snd <$> evtp- rSwitch (evMap (*10)) -< (evx, evarr) l = [(1, Nothing),' (2, Just (arr $ fmap (*100))), (3, Nothing),( (4, Just (arr $ fmap (*1000))), (5, Nothing)] in run pa l:}[10,200,300,4000,5000]GDelayed version of F.:{let pa = proc evtp -> do& evx <- returnA -< fst <$> evtp+ evarr <- filterJust -< snd <$> evtp. drSwitch (evMap (*10)) -< (evx, evarr) l = [(1, Nothing),' (2, Just (arr $ fmap (*100))), (3, Nothing),( (4, Just (arr $ fmap (*1000))), (5, Nothing)] in run pa l:}[10,20,300,400,5000]VRepeatedly call p.How many times p is called is indefinite. So p! must satisfy the equation below; 1p &&& (p >>> arr null) === p &&& arr (const True)where (null = getAll . foldMap (_ -> All False)WRun a machine.X%Run a machine discarding all results.[9Execute until an input consumed and the machine suspends.aDuring the execution, the machine may yield values or stops. It can be handled by two callbacks.tIn some case the machine failed to consume the input value. If so, the value is passed to the termination callback.\!Execute until an output produced.aDuring the execution, the machine may await values or stops. It can be handled by two callbacks.\If the machine stops without producing any value, The first element of the return tuple is .[Lifting function (pass  if m' ~ m)Callback on every output value.Callback on termination.The machine to run.The argument to the machine.\Lifting function (pass  if m' ~ m) Callback on input value request.Callback on terminationThe machine to run.D !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\D.-*+(),12&'3456789 !"<?:@ABC#$%;=>WXYZ[\DEFGHIJKNOPQRSTULM/0V !"#$%&'()*+,.SafeM#SafeMSafe ;<=>?QVtAccumulate inputs like fold.:{let pa = proc evx -> do% val <- accum 0 -< (+1) <$ evx returnA -< val <$ evx in run pa (replicate 10 ()):}[1,2,3,4,5,6,7,8,9,10]gSince 4.0.0, this function become strict for the first argument because lazy one could rarely be used. You can make Des to make lazy one.Delayed version of .:{let pa = proc evx -> do& val <- dAccum 0 -< (+1) <$ evx returnA -< val <$ evx in run pa (replicate 10 ()):}[0,1,2,3,4,5,6,7,8,9]gSince 4.0.0, this function become strict for the first argument because lazy one could rarely be used. You can make Des to make lazy one.!Detects edges of input behaviour.(run (hold 0 >>> edge) [1, 1, 2, 2, 2, 3] [0,1,2,3]+run (hold 0 >>> edge) [0, 1, 1, 2, 2, 2, 3] [0,1,2,3]FProvides a source event stream. A dummy input event stream is needed.  run af [...] is equivalent to ( run (source [...] >>> af) (repeat ()) !Provides a blocking event stream.#Make a blocking source interleaved.$Make an interleaved source blocking.+Make two event streams into one. Actually  is more general and convenient; ... <- tee -< (e1, e2)is equivalent to ,... <- gather -< [Left <$> e1, Right <$> e2]hMake multiple event channels into one. If simultaneous events are given, lefter one is emitted earlier.:{ let pa = proc x -> do5 r1 <- filterEvent (\x -> x `mod` 2 == 0) -< x5 r2 <- filterEvent (\x -> x `mod` 3 == 0) -< x gather -< [r1, r2] in run pa [1..6]:} [2,3,4,6,6].It is terminated when the last input finishes.:{ let pa = proc x -> doB r1 <- filterEvent (\x -> x `mod` 3 == 0) -< x :: Event Int r2 <- stopped -< x r3 <- returnA -< r2% fin <- gather -< [r1, r2, r3] val <- hold 0 -< r1 end <- onEnd -< fin returnA -< val <$ end in run pa [1..5]:}[3]FGiven an array-valued event and emit it's values as inidvidual events.run fork [[1,2,3],[],[4,5]] [1,2,3,4,5]7Executes an action once per an input event is provided.7Executes an action once per an input event is provided.7Executes an action once per an input event is provided.1Emit an event of given value as soon as possible."Emit an event as soon as possible.  now = oneshot () Emit an event at the end of the input stream. >>> :{ let pa = proc evx -> do x <- hold 0 -< evx ed <- onEnd -< evx returnA -< x <$ ed in run pa [1..10] :} [10]DEFGHILMNORSDEFGHINORSLM 3Contains the main documentation and module imports.Safe &';=>?QVvw  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\Safe;=>?QVyISafe;=>?QV{Discrete algebra type.The discrete signal type.SConstant without initial notifications. Users must manage initialization manually.   !"#$%&'()* ++,--.//0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PQ46(machinecell-4.0.1-9JFE3t4GFREBrmWskEUxZUControl.Arrow.Machine.ArrowUtilControl.Arrow.Machine.Types$Control.Arrow.Machine.Misc.ExceptionControl.Arrow.Machine.EvolutionControl.Arrow.Machine.UtilsControl.Arrow.Machine.Misc.Pump#Control.Arrow.Machine.Misc.DiscreteControl.Arrow.Machine.PlanPlanControl.Arrow.MachineUtilsAStoASfromASary0ary1ary2ary3ary4ary5kleislikleisli0kleisli2kleisli3kleisli4kleisli5 unArrowMonad arrowMonadklamuc0uc1uc2uc3uc4uc5 MonadStopstop MonadYieldyield MonadAwaitawaitPlanT freePlanT Evolution runEvolution ZeroEvent Occasionalburst Occasional'collapseEventProcessAProcessTfitfitWnoEventend condEvent filterEvent filterJust filterLeft filterRight splitEventevMapmutedpackProccatchP awaitProc yieldProcstopped constructT repeatedlyT construct repeatedlyswitchdSwitchrSwitchdrSwitchkSwitchdkSwitchgSwitchdgSwitchparparBpSwitchpSwitchBdpSwitch dpSwitchBrpSwitch rpSwitchB drpSwitch drpSwitchB unsafeExhaustrunTrunT_runrun_stepRun stepYield $fMonoidPhase$fSemigroupPhase$fArrowProcessT$fCategoryTYPEProcessT$fMonoidProcessT$fSemigroupProcessT$fApplicativeProcessT$fFunctorProcessT$fProfunctorProcessT$fStepperabcProcessT$fArrowLoopProcessT$fArrowChoiceProcessT$fProcessHelperMaybe$fProcessHelperIdentity$fSteppermbcCompositeStep$fSteppermbcIDStep$fSteppermbcArrStep$fSteppermbcParStep $fMonoidEvent$fSemigroupEvent$fFunctorEvent$fOccasional'Event$fOccasional'(,)$fOccasionalEvent$fOccasional(,)$fOccasional'ZeroEvent$fMonoidZeroEvent$fSemigroupZeroEvent$fMonadIOEvolution$fMonadTransEvolution$fFunctorPlanF$fMonadIOPlanT$fMonadStatesPlanT$fMonadWriterwPlanT$fMonadReaderrPlanT$fMonadTransPlanT$fMonadAwaitEvolutiona$fMonadAwaitPlanTi$fMonadYieldEvolutiona$fMonadYieldPlanTo$fMonadStopEvolution$fMonadStopPlanT$fMonadPlusPlanT$fAlternativePlanT$fSteppermbcolPluralStep $fEqPhase $fShowPhase $fEqZeroEvent$fShowZeroEvent$fEnumZeroEvent$fBoundedZeroEvent$fFunctorEvolution$fApplicativeEvolution$fMonadEvolution$fFunctorPlanT$fApplicativePlanT $fMonadPlanTcatchhandlebracketbracket_bracketOnErrorfinally onException switchAfter dSwitchAfter kSwitchAfter dkSwitchAfter gSwitchAfter dgSwitchAfter finishWithevolveholddHoldaccumdAccumedgesourceblockingSource interleaveblockingteegatherforkfirefire0anytimeoneshotnowonEndDuctintakeoutletAlgevalTupdatesvaluearrarr2arr3arr4arr5constantunsafeConstantfromEq asUpdaterrefer$fNumAlg$fApplicativeAlg $fFunctorAlgNoEventbase Control.ArrowPhaseFeedSweepSuspend compositeProcGHC.BaseNothingidRunInfofreezeRI getInputRI getPaddingRI getPhaseRI PluralStepPlanFAwaitPFYieldPFStopPFEndParStepArrStepIDStep CompositeStep ProcessHelperstep helperToMaybeweakly compositeSteppaFeedpaSweep paSuspendStepperfeedsweepsuspend