9+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ] ^ _ ` a b c d e f g h i j k l m n o p q rst u v w x y z { | } ~  (c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de> Safe-Inferred!"+-./2468EHM JA time line is a non-empty set of samples together with time information.Insert the given data point.Linearly interpolate the points in the time line, integrate the given time interval of the graph, divide by the interval length.,Cut the timeline at the given point in time t1, such that all samples up to but not including t0 are forgotten. The most recent sample before t' is moved and interpolated accordingly.,Cut the timeline at the given point in time t$, such that all samples later than t/ are forgotten. The most recent sample after t' is moved and interpolated accordingly. Look up with linear sampling. SIntegrate the given time interval of the staircase, divide by the interval length. ,Cut the timeline at the given point in time t1, such that all samples up to but not including t0 are forgotten. The most recent sample before t is moved accordingly. ,Cut the timeline at the given point in time t$, such that all samples later than t+ are forgotten. The earliest sample after t is moved accordingly. Look up on staircase.(Singleton timeline with the given point.'Union of two time lines. Right-biased.      (c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de> Safe-Inferred!"+-./2468EHMYThis state delta type denotes time deltas. This is necessary for most FRP applications.State delta generators as required for wire sessions, most notably to generate time deltas. These are mini-wires with the sole purpose of generating these deltas.#State delta types with time deltas.Extract the current time delta.,State delta generator for a real time clock.Non-extending version of .qState delta generator for a simple counting clock. Denotes a fixed framerate. This is likely more useful than & for simulations and real-time games.Non-extending version of .Increment size.   (c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHMRA wire is a signal function. It maps a reactive value to another reactive value.!Left-strict version of  for functions."Left-strict version of  for functions.#This wire delays its input signal by the smallest possible (semantically infinitesimal) amount of time. You can use it when you want to use feedback (,): If the user of the feedback depends on nowj, delay the value before feeding it back. The argument value is the replacement signal at the beginning.Depends: before now.$*Evaluate the input signal using the given 2 here. This wire evaluates only produced values. Depends: now.%cForce the input signal to WHNF here. This wire forces both produced values and inhibition values. Depends: now.&KForce the input signal to NF here. This wire forces only produced values. Depends: now.'Left-strict tuple.8Apply the given function to the wire's inhibition value..Apply the given function to the wire's output.(>Apply the given monad morphism to the wire's underlying monad.)BConstruct a stateless wire from the given signal mapping function.*1Construct the empty wire, which inhibits forever.+=Construct a stateful wire from the given transition function.,>Construct a stateless wire from the given transition function.-=Construct a stateful wire from the given transition function..Construct the identity wire./BConstruct a pure stateful wire from the given transition function.0CConstruct a pure stateless wire from the given transition function.1BConstruct a pure stateful wire from the given transition function.2>Construct a pure stateful wire from the given signal function.38Construct a pure stateless wire from the given function.4>Construct a pure stateful wire from the given signal function.5#Perform one step of the given wire./ !"#$%&'()*+,-./012345 !"#$%&'()*+,-./012345 5)*+,-./01234#$%&!"'(* !"#$%&'()*+,-./012345(c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM6This function runs the given wire using the given state delta generator. It constantly shows the output of the wire on one line on stdout. Press Ctrl-C to abort.7This function runs the given wire using the given state delta generator. It constantly shows the output of the wire on one line on stdout. Press Ctrl-C to abort.67676767(c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM8Local time starting from zero.9KLocal time starting from zero, converted to your favorite fractional type.:)Local time starting from the given value.89:89:89:89:(c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM;JDenotes a stream of values, each together with time of occurrence. Since ; is commonly used for functional reactive programming it does not define most of the usual instances to protect continuous time and discrete event occurrence semantics.>Fold the given event.?LMerge two events using the given function when both occur at the same time.@Did the given event occur?AEach time the given event occurs, perform the given action with the value the event carries. The resulting event carries the result of the action. Depends: now. ;<=>?@A;<=>?@A;=<>?@A ;=<>?@A(c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHMBhMerge events with the leftmost event taking precedence. Equivalent to using the monoid interface with First . Infixl 5.Depends: now on both.,Inhibits: when any of the two wires inhibit.ChMerge events with the rightmost event taking precedence. Equivalent to using the monoid interface with Last . Infixl 5.Depends: now on both.,Inhibits: when any of the two wires inhibit.DLLeft scan for events. Each time an event occurs, apply the given function. Depends: now.ELeft scan for events with no initial value. Each time an event occurs, apply the given function. The first event is produced unchanged. Depends: now.FAt the given point in time.Depends: now when occurring.GvOccurs each time the predicate becomes true for the input signal, for example each time a given threshold is reached. Depends: now.H-Forget the first given number of occurrences. Depends: now.IHForget all initial occurrences until the given predicate becomes false. Depends: now.J>Forget all occurrences for which the given predicate is false. Depends: now.K9On each occurrence, apply the function the event carries. Depends: now.LMaximum of all events. Depends: now.MMinimum of all events. Depends: now.NLeft-biased event merge.ORight-biased event merge.P Never occurs.QOccurs each time the predicate becomes false for the input signal, for example each time a given threshold is no longer exceeded. Depends: now.RdEvents occur first when the predicate is false then when it is true, and then this pattern repeats. Depends: now.SForget the first occurrence. Depends: now.TOccurs once immediately.Depends: now when occurring.U(Forget all occurrences except the first.Depends: now when occurring.VJPeriodic occurrence with the given time period. First occurrence is now.Depends: now when occurring.WPeriodic occurrence with the given time period. First occurrence is now. The event values are picked one by one from the given list. When the list is exhausted, the event does not occur again.XProduct of all events. Depends: now.YSum of all events. Depends: now.Z5Forget all but the first given number of occurrences. Depends: now.[NForget all but the initial occurrences for which the given predicate is true. Depends: now.BCD Fold functionInitial value.E Fold functionFTime of occurrence.GHIJKLMNOPQRSTUVWXYZ[;?BCDEFGHIJKLMNOPQRSTUVWXYZ[;FPTVWGQRBCHIJ?NOSUZ[DEKLMXYBCDEFGHIJKLMNOPQRSTUVWXYZ[BC (c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM \After the given time period.)Depends: now after the given time period.$Inhibits: for the given time period.] Alias for `.^NStart each time the left event occurs, stop each time the right event occurs.Depends: now when active.HInhibits: after the right event occurred, before the left event occurs._For the given time period.'Depends: now for the given time period.&Inhibits: after the given time period.`LStart when the event occurs for the first time reflecting its latest value. Depends: now.4Inhibits: until the event occurs for the first time.aHold each event occurrence for the given time period. Inhibits when no event occurred for the given amount of time. New occurrences override old occurrences, even when they are still held. Depends: now.>Inhibits: when no event occurred for the given amount of time.b%Inhibit forever with the given value.Inhibits: always.c7When the given predicate is false for the input signal. Depends: now.(Inhibits: unless the predicate is false.dWProduce until the given event occurs. When it occurs, inhibit with its value forever. Depends: now until event occurs.%Inhibits: forever after event occurs.e6When the given predicate is true for the input signal. Depends: now.&Inhibits: when the predicate is false. \]^_`abcde \]^_`abcde b\_ce]^`ad \]^_`abcde (c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM fYActs like the first wire until it inhibits, then switches to the second wire. Infixr 1.Depends: like current wire./Inhibits: after switching like the second wire. Switch: now.gvActs like the first wire until the second starts producing, at which point it switches to the second wire. Infixr 1.Depends: like current wire./Inhibits: after switching like the second wire. Switch: now.h2Intrinsic continuable switch: Delayed version of m.~Inhibits: like the first argument wire, like the new wire after switch. Inhibition of the second argument wire is ignored.'Switch: once, after now, restart state.i&Extrinsic switch: Delayed version of p. Inhibits: like the current wire.,Switch: recurrent, after now, restart state.jActs like the first wire until an event occurs then switches to the second wire. Behaves like this wire until the event occurs at which point a *new* instance of the first wire is switched to.Depends: like current wire."Inhibits: like the argument wires.!Switch: once, now, restart state.k&Intrinsic switch: Delayed version of q.BInhibits: like argument wire until switch, then like the new wire.'Switch: once, after now, restart state.l2Extrinsic continuable switch. Delayed version of n. Inhibits: like the current wire.,Switch: recurrent, after now, restart state.mIntrinsic continuable switch:  kSwitch w1 w2 starts with w1. Its signal is received by w2, which may choose to switch to a new wire. Passes the wire we are switching away from to the new wire, such that it may be reused in it.~Inhibits: like the first argument wire, like the new wire after switch. Inhibition of the second argument wire is ignored.!Switch: once, now, restart state.n6Extrinsic continuable switch. This switch works like pN, except that it passes the wire we are switching away from to the new wire. Inhibits: like the current wire.&Switch: recurrent, now, restart state.oRoute the left input signal based on the current mode. The right input signal can be used to change the current mode. When switching away from a mode and then switching back to it, it will be resumed. Freezes time during inactivity.hComplexity: O(n * log n) space, O(log n) lookup time on switch wrt number of started, inactive modes.8Depends: like currently active wire (left), now (right).$Inhibits: when active wire inhibits.Switch: now on mode change.ppExtrinsic switch: Start with the given wire. Each time the input event occurs, switch to the wire it carries. Inhibits: like the current wire.&Switch: recurrent, now, restart state.quIntrinsic switch: Start with the given wire. As soon as its event occurs, switch to the wire in the event's value.BInhibits: like argument wire until switch, then like the new wire.!Switch: once, now, restart state. fghijklmno Initial mode.Select wire for given mode.pq fghijklmnopq fgoqkmhpijnl fghijklmnopqfg(c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHMrSimple wires with time.s Pure wires.rs      !"#$%&'()*+,-./0123456789:;?BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrssrrs (c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM tAverage framerate over the last given number of samples. One important thing to note is that the value of this wire will generally disagree with } composed with uX. This is expected, because this wire simply calculates the arithmetic mean, whereas }- will actually integrate the framerate graph.Note: This wire is for debugging purposes only, because it exposes discrete time. Do not taint your application with discrete time.6Complexity: O(n) time and space wrt number of samples.uCurrent framerate.Note: This wire is for debugging purposes only, because it exposes discrete time. Do not taint your application with discrete time.)Inhibits: when the clock stopped ticking.v High peak. Depends: now.w8High peak with respect to the given comparison function. Depends: now.xCalculate the average of the signal over the given interval (from now). This is done by calculating the integral of the corresponding linearly interpolated graph and dividing it by the interval length. See  for details.\Linear interpolation can be slow. If you don't need it, you can use the staircase variant }. Example: lAvg 2KComplexity: O(s) space, O(s) time wrt number of samples in the interval. Depends: now.y{Produce a linearly interpolated graph for the given points in time, where the magnitudes of the points are distances from now.cLinear interpolation can be slow. If you don't need it, you can use the faster staircase variant ~. Example: lGraph [0, 1, 2]) will output the interpolated inputs at now3, one second before now and two seconds before now.Complexity: O(s) space, O(n * log s) time, where s = number of samples in the interval, n = number of requested data points. Depends: now.zyGraph the given interval from now with the given number of evenly distributed points in time. Convenience interface to y.cLinear interpolation can be slow. If you don't need it, you can use the faster staircase variant .Complexity: O(s) space, O(n * log s) time, where s = number of samples in the interval, n = number of requested data points. Depends: now.{ Low peak. Depends: now.|7Low peak with respect to the given comparison function. Depends: now.9Given peak with respect to the given comparison function.}Calculate the average of the signal over the given interval (from now). This is done by calculating the integral of the corresponding staircase graph and dividing it by the interval length. See   for details. See also x. Example: sAvg 2KComplexity: O(s) space, O(s) time wrt number of samples in the interval. Depends: now.~oProduce a staircase graph for the given points in time, where the magnitudes of the points are distances from now. See also y. Example: sGraph [0, 1, 2] will output the inputs at now4, one second before now and two seconds before now.Complexity: O(s) space, O(n * log s) time, where s = number of samples in the interval, n = number of requested data points. Depends: now.yGraph the given interval from now with the given number of evenly distributed points in time. Convenience interface to ~. See also z.Complexity: O(s) space, O(n * log s) time, where s = number of samples in the interval, n = number of requested data points. Depends: now. tNumber of samples.uvwxInterval size.yData points to produce.zInterval to graph from now.!Number of data points to produce.{|1This ordering means the first argument is larger.Compare two elements.}Interval size.~Data points to produce.Interval to graph from now.!Number of data points to produce. tuvwxyz{|}~ xyz}~vw{|tu tuvwxyz{|}~ (c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM$Time derivative of the input signal. Depends: now.Inhibits: at singularities.%Integrate the input signal over time.Depends: before now.Integrate the left input signal over time, but apply the given correction function to it. This can be used to implement collision detection/reaction.The right signal of type w is the  world valueY. It is just passed to the correction function for reference and is not used otherwise.MThe correction function must be idempotent with respect to the world value: f w (f w x) = f w x@. This is necessary and sufficient to protect time continuity.Depends: before now.'Integration constant (aka start value).Correction function.'Integration constant (aka start value). (c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM:Noise events with the given distance between events. Use ` or a to generate a staircase.^Noise events with the given distance between events. Noise will be in the given range. Use ` or a to generate a staircase.Convenience interface to  for .Convenience interface to  for .Convenience interface to  for .ZRandomly produce or inhibit with the given probability, each time for the given duration. The name  Wackelkontakt (German for  slack jointe) is a Netwire running gag. It makes sure that you revisit the documentation from time to time. =) Depends: now. Time period.Random number generator.Step duration. Noise range.Random number generator.Step duration. seed.Step duration. Noise range. seed.Step duration.Probability to produce. seed. Duration.Probability to produce.Random number generator.(c) 2013 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None!"+-./2468EHM     #$%&6789:;?BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~sr#$%& !""##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLKMNOPQRSTUVWXYZ[\]^_`abcdefghij k l m n o p q r s t u v w x y z { | } ~                                                         !  ! "#$%& netwire-5.0.1 Control.WireFRP.Netwire.Utils.TimelineControl.Wire.SessionControl.Wire.CoreControl.Wire.RunControl.Wire.TimeControl.Wire.Unsafe.EventControl.Wire.EventControl.Wire.IntervalControl.Wire.SwitchFRP.Netwire.AnalyzeFRP.Netwire.MoveFRP.Netwire.Noise FRP.Netwiretransformers-0.3.0.0Data.Functor.IdentityIdentity runIdentity time-1.4.2Data.Time.Clock.UTCNominalDiffTimeTimelineinsertlinAvglinCutLlinCutR linLookupscAvgscCutLscCutRscLookup singletonunionTimedSession stepSessionHasTimedtime clockSession clockSession_ countSession countSession_WireWPureWIdWGenWConstWArr&&&!***!delayevalWithforceforceNFlstrictmapWiremkConstmkEmptymkGenmkGen_mkGenNmkIdmkPuremkPure_mkPureNmkSFmkSF_mkSFNstepWiretestWire testWireMtimetimeFtimeFromEventNoEventeventmergeoccurredonEventM<&&>accumEaccum1EatbecamedropE dropWhileEfilterEiterateEmaximumEminimumEmergeLmergeRnevernoLongeredgenotYetnowonceperiodic periodicListproductEsumEtakeE takeWhileEafterasSoonAsbetweenforholdholdForinhibitunlessuntilwhen-->>--dkSwitchdrSwitch alternatedSwitch dkrSwitchkSwitchkrSwitchmodesrSwitchswitch SimpleWireWirePavgFps frameratehighPeak highPeakBylAvglGraphlGraphNlowPeak lowPeakBysAvgsGraphsGraphN derivativeintegral integralWithnoisenoiseRstdNoise stdNoiseRstdWackelkontakt wackelkontakttimeline$fFunctorTimeline $fMonoidTimed$fHasTimetTimed$fApplicativeSessionbase Control.Arrow&&&*** ArrowLoopparallel-3.2.0.6Control.Parallel.StrategiesStrategymapLeft mapOutput $fStrongWire$fSemigroupWire$fProfunctorWire $fNumWire $fMonoidWire$fIsStringWire $fFunctorWire$fFractionalWire$fFloatingWire $fChoiceWire$fCategory*Wire$fArrowZeroWire$fArrowPlusWire$fArrowLoopWire$fArrowChoiceWire $fArrowWire$fApplicativeWire$fAlternativeWire$fSemigroupEvent $fNFDataEvent $fMonoidEvent$fFunctorEventarrfirstapp|||loopControl.Applicative<*>pure Alternative ApplicativeoptionalliftA3liftA2liftA<**><**>manysome<|>emptygetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListleftApp^<<<<^>>^^>>returnAsecondArrow runKleisliKleisli zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoice ArrowApply ArrowMonad Data.Functor<$>Control.Category>>><<<.idCategory Data.MonoidmconcatmappendmemptyMonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductGHC.Base<$semigroups-0.16.0.1Data.SemigroupdiffoptiontimesNcycle1times1psconcat<> SemigroupgetMinMingetMaxMaxgetFirstFirstgetLastLast unwrapMonoid WrapMonoid WrappedMonoid getOptionOptionpeakBy random-1.1 System.RandomStdGen