!{qt#|      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{Safe $%/345;=QV]pq&plan-applicative Instances of  are |s with nodes of type n), interspersed with annotations of type a,, and perhaps some other extra information.They must satisfy @bifoldMap f (\_ -> mempty) s == foldMap (foldMap f) (toForest s)plan-applicative7Forget about the annotations and return the underlying |. plan-applicativeThe execution of a  M can make progress by skipping a step, starting a step, or finishing a step. plan-applicative(Provides the substeps that were skipped. plan-applicative1Provides the substeps that will be executed next. plan-applicative Provides a - of measurements for the completed substeps.  for the 6 gives the finishing measurement for the current step.plan-applicative-Represents some kind of progress through the  of a   while the plan executes.lThe ascending list of contexts provides the current position of the execution along the hierarchy of steps.NIf the plan only has a linear sequence of steps, the list will have only one .plan-applicative<Represents how far we are along a sequence of sibling steps.#For the already completed steps, a  of measurements is provided.  for the 6 returns the starting measurement of the current step.plan-applicativeA | of steps tags of type s) interspersed with measurements of type t.plan-applicativeA | of steps tags of type s1 interspersed with monoidal annotations of type w. plan-applicative(A computation that takes inputs of type i and produces outputs of type o! working in the underlying monad m. The }- instance cares only about the outputs, the ~/ instance cares about both inputs and outputs.CParts of the computation can be labeled as steps with tags of type s. <Computations can have monoidal resource annotations of type w.[The structure of steps and the monoidal annotations can be inspected before executing the  ."plan-applicativeA catamorphism on , that "destroys" the  value from the leaves upwards.Unlike  or y, it allows a more structured analysis of the annotations, by preserving their relationship with the hierarchy of steps.$plan-applicative Adapt the Step value inside a   without extracting it.%plan-applicative:Use a lens setter to "zoom" the monoidal annotations of a   into a wider monoidal context.&plan-applicative!Change the underlying monad of a  .'plan-applicative$Inspect a plan without executing it.(plan-applicativeJDecorate each step tag with its mandatoriness. Useful in combination with .)plan-applicativeIDeclare a step by wrapping an existing plan (which may contain substeps).*plan-applicativerDeclare an optional step by wrapping an existing arrow plan. The step will only be executed when the input is ..This function only makes sense when using the ~ instance of  , because for }<s an effect cannot depend on previously obtained values.:{ * let example :: Plan String () IO () () example = proc () -> do J i <- step "reading" (plan (readMaybe @Int <$> getLine)) -< () 2 skippable "writing" (plan' print) -< i^ in putStr . drawForest . fmap (fmap show) . toForest . mandatoriness . getSteps $ example :}(Mandatory,"reading")(Skippable,"writing")+plan-applicative`Declare a monoidal annotation. The annotation can be later inspected without having to run the  .:Usually the annotations will represent resources that the   is expected to require.,plan-applicativeLift a monadic action to a  . The input type i- remains polymorphic, usually it will become ().-plan-applicativeLift a Kleisli arrow to a  ./plan-applicativeLift an  action to a  . The input type i- remains polymorphic, usually it will become ().0plan-applicative Lift a Kleisli arrow working in  to a  .3plan-applicativePair each step tag s inside a  ' with the corresponding element of the |.UIf the forest doesn't have the same structure as the steps, the function fails with .This function can be useful to annotate each step tag with some information, for example the time duration of the step in a previous execution of the plan. See , ;, and .4plan-applicativeA given step might not have been reached yet. It it has been reached, either it has been skipped at a certain time, or started at a certain time. If if has been started, maybe it has already finished, too..This function can be used in combination with  and ( to render the state of each step for a .8plan-applicative?Forget that there is a plan, get the underlying monadic action.9plan-applicative>Forget that there is a plan, get the underlying Kleisli arrow.;plan-applicativeDecorate each step tag with either the time the step was skipped, or the time it was started and finished. Useful in combination with .<plan-applicativeA catamorphism on s, that "destroys" the  value from the leaves upwards.>plan-applicative/Specify a monadic callback for processing each  update.?plan-applicative2Runs a plan that doesn't need input. It returns a  of J updates that are emitted every time the execution advances through the .  For each ' update, a monadic measurement of type tI is taken. Usually the measurement consists in getting the current time.When the execution finishes, a ! with the measurements for each + is returned, along with the result value. ,Even if the plan didn't have any steps, the A will contain a measurement taken when the computation finished.@plan-applicativeLike ? , but for ~-like  s that take inputs.Eplan-applicative; allows extracting the steps and the annotations together. Kplan-applicative(s always have at least one measurement.  gives the final measurement.Vplan-applicativeA | is a  for which no annotations exist.Wplan-applicative. forgets about the measurements and returns a | of step tags.Xplan-applicative- forgets about the annotations and returns a | of step tags."plan-applicative5A function that consumes a list of step tags of type s6, surrounded and interleaved with annotations of type wI. Each step is also annotated with its mandatoriness and with the result r. of consuming its substeps, if there were any.<plan-applicative5A function that consumes a list of step tags of type s7, surrounded and interleaved with measurements of type t. Each step is also annotated with either its substeps, if it the step was skipped, or the results of consuming the substeps, if it was executed.?plan-applicative-Monadic measurement to be taken on each tick.plan-applicativePlan without input.@plan-applicative-Monadic measurement to be taken on each tick.plan-applicativePlan that takes input.Aplan-applicative-Monadic measurement to be taken on each tick.plan-applicativePlan that takes input.<  !"#$%&'()*+,-./0123456789:;<=>?@A<  !"#$%&'()*+,-./0123456789:;<=>?@ASafer3  "$%&'()*+,-./013489:;<>?@A3 ,-/0)*+'("$%3&89?@>4 ;<.1:A  !"#$%&''(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~/plan-applicative-2.0.1.0-10bQUR08H1BAYIrlh4Pfcp Control.PlanControl.Plan.CorebaseData.Bitraversable bitraverseData.Bifoldable bifoldMapData.Bifunctorbimap$comonad-5.0.4-KLUOQaUA2d039YzSJ6Z0pEControl.Comonadextract#mmorph-1.1.2-7obnGkZKKLM4PjmQqTaRyYControl.Monad.Morphhoist(streaming-0.2.1.0-FHLWRrpT2tY4tJuFWuhSSQStreaming.PreludeeffectsSylvantoForestRunStateProgressSkippedStartedFinishedTickContext completedcurrentpendingTimelineTick'Skipped'Started' Finished' Mandatoriness Skippable MandatoryStepsPlan foldSteps foldSteps' bimapSteps zoomSteps hoistPlangetSteps mandatorinessstep skippableforetellplanplan'kplanplanIOplanIO'kplanIO zipStepsizipSteps completednesscontextCompletednessadaptprogressCompletedness unliftPlan unliftPlan' unliftKPlaninstants foldTimeline foldTimeline'onTickrunPlanrunPlan'runKPlan $fMonoidSteps$fSemigroupSteps$fBitraversableSteps$fBifoldableSteps$fBifunctorSteps$fProfunctorPlan $fArrowPlan$fCategoryTYPEPlan$fApplicativePlan$fComonadTimeline$fBitraversableTimeline$fBifoldableTimeline$fBifunctorTimeline$fBifunctorContext$fBitraversableProgress$fBifoldableProgress$fBifunctorProgress$fBitraversableTick$fBifoldableTick$fBifunctorTick $fSylvanClown$fSylvanTimeline $fSylvanSteps$fSylvanProgress $fSylvanTick$fShowMandatoriness$fEqMandatoriness$fOrdMandatoriness$fFunctorSteps$fFoldableSteps$fTraversableSteps $fEqSteps $fShowSteps $fEqTick' $fOrdTick' $fEnumTick' $fShowTick' $fFunctorPlan$fFunctorTimeline$fFoldableTimeline$fTraversableTimeline $fEqTimeline$fShowTimeline$fFunctorContext$fFoldableContext$fTraversableContext $fEqContext $fShowContext$fFunctorProgress$fFoldableProgress$fTraversableProgress $fEqProgress$fShowProgress $fFunctorTick$fFoldableTick$fTraversableTick$fEqTick $fShowTickcontainers-0.5.11.0 Data.TreeForestGHC.Base Applicative Control.ArrowArrow Data.FoldablefoldMapJustghc-prim GHC.TypesIONothing drawForestStreaming.InternalStream