&cq      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ \ ] ^ _ ` a b c d e f g h i j k l m n opq r s t u v w x y z { | } ~   Ertugrul Soeylemez <es@ertes.de> Safe-Inferred =A 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 B given time interval of the graph, divide by the interval length. ,Cut the timeline at the given point in time t, such that all ! samples up to but not including t! 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. BIntegrate the given time interval of the staircase, divide by the  interval length. ,Cut the timeline at the given point in time t, such that all ! samples up to but not including t! 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.       Ertugrul Soeylemez <es@ertes.de>None BThis state delta type denotes time deltas. This is necessary for  most FRP applications. CState delta generators as required for wire sessions, most notably F 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 . DState 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.      Ertugrul Soeylemez <es@ertes.de>NoneBA 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 G (semantically infinitesimal) amount of time. You can use it when you  want to use feedback ( ): If the user of the feedback  depends on now/, 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  here. This & wire evaluates only produced values.  Depends: now. "<Force the input signal to WHNF here. This wire forces both ( produced values and inhibition values.  Depends: now. #CForce the input signal to NF here. This wire forces only produced  values.  Depends: now. $Left-strict tuple. %*Apply the given monad morphism to the wire's underlying monad. &CConstruct a stateless wire from the given signal mapping function. '2Construct 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. ,CConstruct a pure stateful wire from the given transition function. -DConstruct a pure stateless wire from the given transition function. .CConstruct a pure stateful wire from the given transition function. /?Construct a pure stateful wire from the given signal function. 09Construct a pure stateless wire from the given function. 1?Construct a pure stateful wire from the given signal function. 2$Perform one step of the given wire. * !"#$%&'()*+,-./012 !"#$%&'()*+,-./0122&'()*+,-./01 !"#$%% !"#$%&'()*+,-./012 Ertugrul Soeylemez <es@ertes.de>None6>This function runs the given wire using the given state delta G generator. It constantly shows the output of the wire on one line on ! stdout. Press Ctrl-C to abort. 7>This function runs the given wire using the given state delta G generator. It constantly shows the output of the wire on one line on ! stdout. Press Ctrl-C to abort. 67676767 Ertugrul Soeylemez <es@ertes.de>None8Local time starting from zero. 9:Local time starting from zero, converted to your favorite  fractional type. :*Local time starting from the given value. 89:89:89:89: Ertugrul Soeylemez <es@ertes.de>None;CDenotes a stream of values, each together with time of occurrence.  Since ;9 is commonly used for functional reactive programming it C does not define most of the usual instances to protect continuous / time and discrete event occurrence semantics. >Fold the given event. ?AMerge two events using the given function when both occur at the  same time. @Did the given event occur? ADEach time the given event occurs, perform the given action with the E value the event carries. The resulting event carries the result of  the action.  Depends: now. ;<=>?@A;<=>?@A;=<>?@A ;=<>?@A Ertugrul Soeylemez <es@ertes.de>NoneBDMerge 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. C9Merge 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. DBLeft scan for events. Each time an event occurs, apply the given  function.  Depends: now. E@Left 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. GBOccurs each time the predicate becomes true for the input signal, 5 for example each time a given threshold is reached.  Depends: now. H.Forget the first given number of occurrences.  Depends: now. IAForget all initial occurrences until the given predicate becomes  false.  Depends: now. J?Forget all occurrences for which the given predicate is false.  Depends: now. K:On 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. PNever occurs. QCOccurs each time the predicate becomes false for the input signal, @ for example each time a given threshold is no longer exceeded.  Depends: now. RForget the first occurrence.  Depends: now. SOccurs once immediately.  Depends: now when occurring. T)Forget all occurrences except the first.  Depends: now when occurring. UBPeriodic occurrence with the given time period. First occurrence  is now.  Depends: now when occurring. VBPeriodic occurrence with the given time period. First occurrence F 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. WProduct of all events.  Depends: now. XSum of all events.  Depends: now. Y6Forget all but the first given number of occurrences.  Depends: now. Z;Forget all but the initial occurrences for which the given  predicate is true.  Depends: now. BCDFold function Initial value. EFold function FTime of occurrence. GHIJKLMNOPQRSTUVWXYZ;?BCDEFGHIJKLMNOPQRSTUVWXYZ;FPSUVGQBCHIJ?NORTYZDEKLMWXBCDEFGHIJKLMNOPQRSTUVWXYZ  Ertugrul Soeylemez <es@ertes.de>None [After the given time period. + Depends: now after the given time period. & Inhibits: for the given time period. \ Alias for _. ]@Start each time the left event occurs, stop each time the right  event occurs.  Depends: now when active. A Inhibits: 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. _>Start when the event occurs for the first time reflecting its  latest value.  Depends: now. 6 Inhibits: until the event occurs for the first time. `@Hold each event occurrence for the given time period. Inhibits G 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. a&Inhibit forever with the given value.  Inhibits: always. b8When the given predicate is false for the input signal.  Depends: now. * Inhibits: unless the predicate is false. cDProduce until the given event occurs. When it occurs, inhibit with  its value forever. " Depends: now until event occurs. ' Inhibits: forever after event occurs. d7When the given predicate is true for the input signal.  Depends: now. ( Inhibits: when the predicate is false. [\]^_`abcd [\]^_`abcd a[^bd\]_`c [\]^_`abcd  Ertugrul Soeylemez <es@ertes.de>None eAActs like the first wire until it inhibits, then switches to the  second wire. Infixr 1.  Depends: like current wire. 1 Inhibits: after switching like the second wire.  Switch: now. f2Intrinsic continuable switch: Delayed version of j. A 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. g&Extrinsic switch: Delayed version of m. " Inhibits: like the current wire. . Switch: recurrent, after now, restart state. h&Intrinsic switch: Delayed version of n. D Inhibits: like argument wire until switch, then like the new wire. ) Switch: once, after now, restart state. i2Extrinsic continuable switch. Delayed version of k. " Inhibits: like the current wire. . Switch: recurrent, after now, restart state. jIntrinsic continuable switch:  kSwitch w1 w2 starts with w1.  Its signal is received by w2&, which may choose to switch to a new D wire. Passes the wire we are switching away from to the new wire, # such that it may be reused in it. A 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. k6Extrinsic continuable switch. This switch works like m, F 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. lBRoute the left input signal based on the current mode. The right F input signal can be used to change the current mode. When switching E away from a mode and then switching back to it, it will be resumed. ! Freezes time during inactivity. D Complexity: O(n * log n) space, O(log n) lookup time on switch wrt & number of started, inactive modes. : Depends: like currently active wire (left), now (right). & Inhibits: when active wire inhibits.  Switch: now on mode change. mCExtrinsic 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. nDIntrinsic switch: Start with the given wire. As soon as its event ( occurs, switch to the wire in the event' s value. D Inhibits: like argument wire until switch, then like the new wire. # Switch: once, now, restart state. efghijklInitial mode. Select wire for given mode. mn efghijklmn elnhjfmgki efghijklmn Ertugrul Soeylemez <es@ertes.de>NoneoSimple wires with time. p Pure wires. op       !"#$%&'()*+,-./0123456789:;?BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoppo543op  Ertugrul Soeylemez <es@ertes.de>None q>Average framerate over the last given number of samples. One G important thing to note is that the value of this wire will generally  disagree with z composed with r. This is expected, B because this wire simply calculates the arithmetic mean, whereas  z. will actually integrate the framerate graph. DNote: This wire is for debugging purposes only, because it exposes C discrete time. Do not taint your application with discrete time. 8 Complexity: O(n) time and space wrt number of samples. rCurrent framerate. DNote: This wire is for debugging purposes only, because it exposes C discrete time. Do not taint your application with discrete time. + Inhibits: when the clock stopped ticking. s High peak.  Depends: now. t9High peak with respect to the given comparison function.  Depends: now. uBCalculate the average of the signal over the given interval (from F now). This is done by calculating the integral of the corresponding E 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 z.  Example: lAvg 2 @ Complexity: O(s) space, O(s) time wrt number of samples in the  interval.  Depends: now. vDProduce a linearly interpolated graph for the given points in time, 7 where the magnitudes of the points are distances from now. -Linear 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  now4, one second before now and two seconds before now. @ Complexity: O(s) space, O(n * log s) time, where s = number of A samples in the interval, n = number of requested data points.  Depends: now. wBGraph the given interval from now with the given number of evenly 7 distributed points in time. Convenience interface to v. -Linear 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 A samples in the interval, n = number of requested data points.  Depends: now. x Low peak.  Depends: now. y8Low peak with respect to the given comparison function.  Depends: now. :Given peak with respect to the given comparison function. zBCalculate the average of the signal over the given interval (from F 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 u.  Example: sAvg 2 @ Complexity: O(s) space, O(s) time wrt number of samples in the  interval.  Depends: now. {BProduce a staircase graph for the given points in time, where the - magnitudes of the points are distances from now.  See also v.  Example: sGraph [0, 1, 2] will output the inputs at now, one / second before now and two seconds before now. @ Complexity: O(s) space, O(n * log s) time, where s = number of A samples in the interval, n = number of requested data points.  Depends: now. |BGraph the given interval from now with the given number of evenly 7 distributed points in time. Convenience interface to {.  See also w. @ Complexity: O(s) space, O(n * log s) time, where s = number of A samples in the interval, n = number of requested data points.  Depends: now. qNumber of samples. rstuInterval size. vData points to produce. wInterval to graph from now. "Number of data points to produce. xy2This ordering means the first argument is larger. Compare two elements. zInterval size. {Data points to produce. |Interval to graph from now. "Number of data points to produce. qrstuvwxyz{| uvwz{|stxyqr qrstuvwxyz{|  Ertugrul Soeylemez <es@ertes.de>None}%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 E correction function to it. This can be used to implement collision  detection/ reaction. The right signal of type w is the  world value. It is just passed E to the correction function for reference and is not used otherwise. EThe 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). }~}~}~  Ertugrul Soeylemez <es@ertes.de>None:Noise events with the given distance between events. Use _ or  ` to generate a staircase. DNoise events with the given distance between events. Noise will be  in the given range. Use _ or ` to generate a staircase. Convenience interface to  for . Convenience interface to  for . Convenience interface to  for . BRandomly produce or inhibit with the given probability, each time  for the given duration.  The name  Wackelkontakt (German for  slack joint) is a Netwire E 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.  Ertugrul Soeylemez <es@ertes.de>None       !"#6789:;?BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~po !"# !"#$%&'()*+,-./0123456789:;<=>?@ABCDBCEBCEFGHIJKLKMNOPQRSTUVWXYZ[\]^_`abcdefghi j k l m n o p q r s t u v w x y z { | }~        netwire-5.0.0 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.Netwire time-1.4.0.1Data.Time.Clock.UTCNominalDiffTimeTimelineinsertlinAvglinCutLlinCutR linLookupscAvgscCutLscCutRscLookup singletonunionTimedSession stepSessionHasTimedtime clockSession clockSession_ countSession countSession_WireWPureWIdWGenWConstWArr&&&!***!delayevalWithforceforceNFlstrictmapWiremkConstmkEmptymkGenmkGen_mkGenNmkIdmkPuremkPure_mkPureNmkSFmkSF_mkSFNstepWiretransformers-0.3.0.0Data.Functor.Identity runIdentityIdentitytestWire testWireMtimetimeFtimeFromEventNoEventeventmergeoccurredonEventM<&&>accumEaccum1EatbecamedropE dropWhileEfilterEiterateEmaximumEminimumEmergeLmergeRnevernoLongernotYetnowonceperiodic periodicListproductEsumEtakeE takeWhileEafterasSoonAsbetweenforholdholdForinhibitunlessuntilwhen-->dkSwitchdrSwitchdSwitch dkrSwitchkSwitchkrSwitchmodesrSwitchswitch SimpleWireWirePavgFps frameratehighPeak highPeakBylAvglGraphlGraphNlowPeak lowPeakBysAvgsGraphsGraphN derivativeintegral integralWithnoisenoiseRstdNoise stdNoiseRstdWackelkontakt wackelkontakttimeline$fFunctorTimeline $fMonoidTimed$fHasTimetTimed$fApplicativeSessionbase Control.Arrow&&&*** ArrowLoopparallel-3.2.0.4Control.Parallel.StrategiesStrategy$fSemigroupWire $fNumWire $fMonoidWire$fIsStringWire $fFunctorWire$fFractionalWire$fFloatingWire$fCategoryWire$fArrowZeroWire$fArrowPlusWire$fArrowLoopWire$fArrowChoiceWire $fArrowWire$fApplicativeWire$fAlternativeWire$fSemigroupEvent $fNFDataEvent $fMonoidEvent$fFunctorEventarrfirstapp|||loopControl.Applicative ApplicativeoptionalliftA3liftA2liftA<**><**><*>puremanysome<|>empty AlternativegetConstConst 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.11Data.SemigroupdiffoptiontimesNcycle1times1psconcat<> SemigroupgetMinMingetMaxMaxgetFirstFirstgetLastLast unwrapMonoid WrapMonoid WrappedMonoid getOptionOptionpeakByrandom-1.0.1.1 System.RandomStdGen