úέ.§·e      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ \ ] ^ _ ` a b c d  Ertugrul Soeylemez <es@ertes.de>The state of the wire. %Time difference for current instant. Random number generator. Request counter. ,A wire is a network of signal transformers.  Time. >Events are signals, which can be absent. They usually denote ( discrete occurences of certain events. $Derivative of time. In English: It's the time between two  instants of an FRP session. Clean up wire state. Initialize wire state. @Create a generic wire from the given function. This is a smart , constructor. Please use it instead of the  constructor. +Extract the transition function of a wire.       Ertugrul Soeylemez <es@ertes.de> ,Reactive sessions with the given time type. False, if in use. State of the last instant. Time of the last instant. Wire for the next instant. CFeed the given input value into the reactive system performing the  next instant using real time. CFeed the given input value into the reactive system performing the * next instant using the given time delta. CFeed the given input value into the reactive system performing the = next instant, which is at the given time. This function is  thread-safe. CFeed the given input value into the reactive system performing the C next instant, which is at the given time. This function is *not*  thread-safe. e&Perform an interlocked step function. 7Initialize a reactive session and pass it to the given  continuation.    Ertugrul Soeylemez <es@ertes.de>>Override the output value at the first non-inhibited instant. ;Override the input value, until the wire starts producing. Apply a function to the wire'$s output at the first non-inhibited  instant. Apply a function to the wire's input, until the wire starts  producing. 8The constant wire. Please use this function instead of  arr (const  c). !?Produce the value of the second argument at the first instant. ( Then produce the second value forever. "@Turn a continuous signal into a discrete one. This transformer E picks values from the right signal at intervals of the left signal. 4The interval length is followed in real time. If it' s zero, then  this wire acts like  second id. #Duplicate a value to a tuple. $This function corresponds to try! for exceptions, allowing you to  observe inhibited signals. %,Floating point modulo operation. Note that fmod n 0 = 0. &@Effectively prevent a wire from rewiring itself. This function C will turn any stateful wire into a stateless wire, rendering most  wires useless. CNote: This function should not be used normally. Use it only, if  you know exactly what you' re doing. '1Identity signal transformer. Outputs its input. ()Unconditional inhibition. Equivalent to f. )BProduce the argument value at the first instant. Then act as the & identity signal transformer forever. *-Keep the value in the first instant forever. +$Apply an arrow to a list of inputs. ,5Inhibit right signal, when the left signal is false. -BSample the given wire at specific intervals. Use this instead of  "9, if you want to prevent the signal from passing through  the wire all the time. CThe left signal interval is allowed to become zero, at which point 9 the signal is passed through the wire at every instant. .CWait for the first signal from the given wire and keep it forever. /Swap the values in a tuple. 0Get the local time. 1=Get the local time, assuming it starts from the given value.  !"#$%&'()*+,-./01 '01"*(,$&-.!)+#%/ !"#$%&'()*+,-./01 Ertugrul Soeylemez <es@ertes.de> 2Decoupled variant of 8. 3Decoupled variant of 9. 4Decoupled variant of :. 5Decoupled variant of ;. 6DRoute signal to a collection of signal functions using the supplied D routing function. If any of the wires inhibits, the whole network  inhibits. 7ABroadcast signal to a collection of signal functions. If any of ? the wires inhibits, then the whole parallel network inhibits. 8>Recurrent parallel routing switch. This combinator acts like  6@, but takes an additional event signal, which can transform the 2 set of wires. This is the most powerful switch.  Just like 61 if any of the wires inhibits, the whole network  inhibits. 9@Recurrent parallel broadcast switch. This combinator acts like  7@, but takes an additional event signal, which can transform the  set of wires.  Just like 71 if any of the wires inhibits, the whole network  inhibits. :>Combinator for recurrent switches. The wire produced by this F switch takes switching events and switches to the wires contained in 6 the events. The first argument is the initial wire. ;CThis is the most basic switching combinator. It is an event-based  one-time switch. FThe first argument is the initial wire, which may produce a switching D event at some point. When this event is produced, then the signal E path switches to the wire produced by the second argument function. 23456789:; ;5:4793682 23456789:; Ertugrul Soeylemez <es@ertes.de><:Choose a unique identifier when switching in and keep it. <<< Ertugrul Soeylemez <es@ertes.de>=/Noise between 0 (inclusive) and 1 (exclusive). >"Noise between -1 and 1 exclusive. ?Noise. @>Noise between 0 (inclusive) and the input signal (exclusive). ARandom boolean. =>?@A=>?@A=>?@A Ertugrul Soeylemez <es@ertes.de>B<Execute the IO action in the input signal at every instant. ENote: If the action throws an exception, then this wire inhibits the  signal. C>Executes the IO action in the right input signal periodically ' keeping its most recent result value. DBExecutes the IO action in the input signal and inhibits, until it ; succeeds without an exception. Keeps the result forever. BCDBCDBCD Ertugrul Soeylemez <es@ertes.de>E!This function corresponds to the g function for lists. G Begins with an initial output value, which is not emitted. Each time D an input event is received, its function is applied to the current + accumulator and the new value is emitted. FAProduce an event once after the specified delay and never again.  The event'0s value will be the input signal at that point. G@Produce an event according to the given list of time deltas and G event values. The time deltas are relative to each other, hence from ! the perspective of switching in [(1, a), (2, b), (3, c)]  produces the event a after one second, b after three seconds  and c after six seconds. HBEvent dam. Collects all values from the input list and emits one  value at each instant. CNote that this combinator can cause event congestion. If you feed 9 values faster than it can produce, it will leak memory. I6Delay events by the time interval in the left signal. CNote that this event transformer has to keep all delayed events in A memory, which can cause event congestion. If events are fed in B faster than they can be produced (for example when the framerate , starts to drop), it will leak memory. Use delayEventSafe to  prevent this. JADelay events by the time interval in the left signal. The event B queue is limited to the maximum number of events given by middle G signal. If the current queue grows to this size, then temporarily no  further events are queued. =As suggested by the type, this maximum can change over time.  However, if it'1s decreased below the number of currently queued % events, the events are not deleted. KDecoupled variant of Q. L@Drop the given number of events, before passing events through. M?Timed event gate for the right signal, which begins closed and > opens after the time interval in the left signal has passed. N?Produce a single event with the right signal whenever the left  signal switches from h to i. O;Whenever the predicate in the first argument switches from h  to i; for the input signal, produce an event carrying the value E given by applying the second argument function to the input signal. P?Produce a single event carrying the value of the input signal, ' whenever the input signal switches to j. QBTurn discrete events into continuous signals. Initially produces G the argument value. Each time an event occurs, the produced value is  switched to the event' s value. RNever produce an event. S$Suppress the first event occurence. T7Produce an event at the first instant and never again. U?Pass the first event occurence through and suppress all future  events. V?Emit the right signal event each time the left signal interval  passes. WDEach time the signal interval passes emit the next element from the  given list. XBPass only the first given number of events. Then suppress events  forever. YCTimed event gate for the right signal, which starts open and slams 2 shut after the left signal time interval passed. Z,Inhibit the signal, unless an event occurs. EFGHIJKLMNOPQRSTUVWXYZFGNOPRTUVWZHIJLMSXYEQKEFGHIJKLMNOPQRSTUVWXYZ  Ertugrul Soeylemez <es@ertes.de>[5Differentiate over time. Inhibits at first instant. \?Differentiate over time. The argument is the value before the  first instant. ]@Integrate over time. The argument is the integration constant. [\][\][\]  Ertugrul Soeylemez <es@ertes.de>^BCalculate the average of the signal over the given number of last = samples. This wire has O(n) space complexity and O(1) time  complexity. FIf you need an average over all samples ever produced, consider using  _ instead. _6Calculate the average of the signal over all samples. BPlease note that somewhat surprisingly this wire runs in constant $ space and is generally faster than ^, but most applications will 7 benefit from averages over only the last few samples. `BCalculate the average number of frames per virtual second for the  last given number of frames. FPlease note that this wire uses the clock, which you give the network ! using the stepping functions in FRP.NetWire.Session. If this clock  doesn'7t represent real time, then the output of this wire won't  either. a>Emits an event, whenever the input signal changes. The event C contains the last input value and the time elapsed since the last  change. bReturh the high peak. cReturn the low peak. d9Return the high peak with the given comparison function. ^_`abcda^_`bcd^_`abcd  Ertugrul Soeylemez <es@ertes.de>R  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd  k    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd e f g h i j k l m nopqrpstuvwuvxpyz{ netwire-1.0.0FRP.NetWire.WireFRP.NetWire.SessionFRP.NetWire.ToolsFRP.NetWire.SwitchFRP.NetWire.RequestFRP.NetWire.RandomFRP.NetWire.IOFRP.NetWire.EventFRP.NetWire.CalculusFRP.NetWire.Analyze FRP.NetWire WireStatewsDTimewsRndGenwsReqVarWireWIdWGenWConstWArrTimeEventDTimecleanupWireState initWireStatemkGentoGenSession sessFreeVar sessStateRef sessTimeRef sessWireRefstepWire stepWireDelta stepWireTime stepWireTime'withWire-->>---=>>=-constant constantAfterdiscretedupexhibitfmodfreezeidentityinhibit initiallykeepmapArequiresampleswallowswaptimetimeFrom drpSwitch drpSwitchBdrSwitchdSwitchparparBrpSwitch rpSwitchBrSwitchswitch identifiernoisenoise1noiseGennoiseR wackelkontaktexecute executeEvery executeOnceaccumafter afterEachdam delayEventsdelayEventsSafedHold dropEventsdropForedgeedgeByedgeJustholdnevernotYetnowonce repeatedlyrepeatedlyList takeEventstakeForwait derivativederivativeFromintegralavgavgAllavgFpsdiffhighPeaklowPeakpeakBy withBlockbase Control.Arrow zeroArrowGHC.Listiterateghc-primGHC.BoolFalseTrue Data.MaybeJust