C4:<      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh i j k l m n o p q r s t u v w x y z { | } ~   Ertugrul Soeylemez <es@ertes.de>%The state of the wire. Random number generator. Request counter. ,A wire is a network of signal transformers.  Time. 4Signal functions are wires over the identity monad. Functor for output signals. BInhibition exception with an informative message. This exception @ is the result of signal inhibition, where no further exception  information is available. DEmbeds the input wire (left signal) into the network with the given = input signal (right signal). Each time the input wire is a , E the current state of the last wire is discarded and the new wire is C evolved instead. New wires can be generated by an event wire and  catched via FRP.NetWire.Event.event . The initial wire is given by  the argument. =Inhibits whenever the embedded wire inhibits. Same feedback ! behaviour as the embedded wire. <Embeds the first received input wire (left signal) into the D network, feeding it the right signal. This wire respects its left A signal only in the first instant, after which it wraps that wire's  evolution. =Inhibits whenever the embedded wire inhibits. Same feedback ! behaviour as the embedded wire. BEmbeds the first instant of the input wire (left signal) into the D network, feeding it the right signal. This wire respects its left E signal in all instances, such that the embedded wire cannot evolve. =Inhibits whenever the embedded wire inhibits. Same feedback ! behaviour as the embedded wire. Clean up wire state.  Construct an   wrapped in a . Initialize wire state. >Create a fixed wire from the given function. This is a smart , constructor. It creates a stateless wire. >Create a generic (i.e. possibly stateful) wire from the given G function. This is a smart constructor. Please use it instead of the  ) constructor for creating generic wires.  Construct an   wrapped in a  with a 9 message indicating that a certain event did not happen. CExtract the transition function of a wire. Unless there is reason 2 (like optimization) to pattern-match against the  constructors, 8 this function is the recommended way to evolve a wire. Efficient signal sharing. ,Efficient forward-composition of two wires. -Run two signals through two signal networks. )Map over the output of a signal network. 7Identity signal network and signal network sequencing.  The zero arrow always inhibits. ;Left-biased signal network combination. If the left arrow = inhibits, the right arrow is tried. If both inhibit, their F combination inhibits. Ignored wire networks still run in real time, * i.e. passed time deltas are accumulated. @Value recursion. Warning: Recursive signal networks must never  inhibit. Make use of FRP.NetWire.Tools.exhibit or  FRP.NetWire.Event.event for wires that may inhibit. BSignal routing. Unused routes are ignored. Note that they still @ run in real time, i.e. the time deltas passed are accumulated. The ! combinator has the behaviour of  . Note that , this effectively keeps a wire bound by the -<< syntax from ; evolving. For alternative embedding combinators see also   and . $Arrow interface to signal networks. *Applicative interface to signal networks. !This instance corresponds to the  and   instances.      Ertugrul Soeylemez <es@ertes.de>AReactive sessions with the given input and output types over the % given monad. The monad must have a  instance to be % usable with the stepping functions. False, if in use. State of the last instant. Time of the last instant. Wire for the next instant. Start a wire session. Clean up a wire session. CFeed the given input value into the reactive system performing the  next instant using real time.  Input value. Session to step. System' s output. !CFeed the given input value into the reactive system performing the * next instant using the given time delta.  Time delta.  Input value. Session to step. System' s output. "CFeed the given input value into the reactive system performing the = next instant, which is at the given time. This function is  thread-safe. )Absolute time of the instant to perform.  Input value. Session to step. System' s output. #CFeed the given input value into the reactive system performing the = next instant, which is at the given time. This function is not  thread-safe. )Absolute time of the instant to perform.  Input value. Session to step. System' s output. $ Interface to % accepting all  instances as the  output type. -Show output once each this number of frames. Input generator.  Your wire. %CThis function provides a convenient way to test wires. It wraps a G default loop around your wire, which just displays the output on your G stdout in a single line (it uses an ANSI escape sequence to clear the  line). It uses real time. -Show output once each this number of frames. Input generator. Wire to evolve. &Perform an interlocked step function. &The session to mark as locked for the $ duration of the given computation. Computation to perform. Result. &7Initialize a reactive session and pass it to the given  continuation. Initial wire of the session. !Continuation, which receives the  session data.  Continuation' s result.  !"#$%& !"#&$% !"#$%& Ertugrul Soeylemez <es@ertes.de>'APerform the next instant of a pure wire over the identity monad. ()Perform the next instant of a pure wire. '('('( Ertugrul Soeylemez <es@ertes.de>)>Override the output value at the first non-inhibited instant. <Same inhibition properties as argument wire. Same feedback  properties as argument wire. *;Override the input value, until the wire starts producing. <Same inhibition properties as argument wire. Same feedback  properties as argument wire. +Apply a function to the wire'$s output at the first non-inhibited  instant. <Same inhibition properties as argument wire. Same feedback  properties as argument wire. ,Apply a function to the wire's input, until the wire starts  producing. <Same inhibition properties as argument wire. Same feedback  properties as argument wire. -!This function corresponds to the  function for lists. F Begins with an initial output value. Each time an input function is F received, it is applied to the current accumulator and the new value  is emitted. "Never inhibits. Direct feedback. .8The constant wire. Please use this function instead of  arr (const  c). Never inhibits. /BOne-instant delay. Delay the signal for an instant returning the E argument value at the first instant. This wire is mainly useful to , add feedback support to wires, which wouldn't support it by  themselves. For example, the FRP.NetWire.Analyze.avg wire does not 6 support feedback by itself, but the following works:  ' do rec x <- delay 1 <<< avg 1000 -< x "Never inhibits. Direct feedback. 0@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. $Never inhibits. Feedback by delay. 1Duplicate a value to a tuple. 2This function corresponds to ! for exceptions, allowing you to & observe inhibited signals. See also FRP.NetWire.Event.event. <Never inhibits. Same feedback properties as argument wire. 3,Floating point modulo operation. Note that fmod n 0 = 0. 4'Inhibit, when the left signal is true. ,Inhibits on true left signal. No feedback. 5"Inhibit, when the signal is true. 'Inhibits on true signal. No feedback. 6@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. DSame inhibition properties as first instant of argument wire. Same 8 feedback properties as first instant of argument wire. 7Keep the latest output. ?Inhibits until first signal from argument wire. Same feedback  properties as argument wire. 81Identity signal transformer. Outputs its input. $Never inhibits. Feedback by delay. 9>Unconditional inhibition with the given inhibition exception. Always inhibits. :<Unconditional inhibition with default inhibition exception. Always inhibits. ;Inject the input  signal.  Inhibits on  signals. <Inject the input  signal.  Inhibits on  signals. =-Keep the value in the first instant forever. $Never inhibits. Feedback by delay. >$Apply an arrow to a list of inputs. ?(Inhibit, when the left signal is false. -Inhibits on false left signal. No feedback. @#Inhibit, when the signal is false. (Inhibits on false signal. No feedback. ABSample the given wire at specific intervals. Use this instead of  09, if you want to prevent the signal from passing through 9 the wire all the time. Returns the most recent result. CThe left signal interval is allowed to become zero, at which point 9 the signal is passed through the wire at every instant. >Inhibits until the first result from the argument wire. Same ' feedback properties as argument wire. BCWait for the first signal from the given wire and keep it forever. ?Inhibits until signal from argument wire. Direct feedback, if 6 argument wire never inhibits, otherwise no feedback. CSwap the values in a tuple. DGet the local time. Never inhibits. E=Get the local time, assuming it starts from the given value. Never inhibits. )*+,-./0123456789:;<=>?@ABCDE.8DE-/07;<=459:?@26AB)*+,>13C)*+,-./0123456789:;<=>?@ABCDE Ertugrul Soeylemez <es@ertes.de> FDecoupled variant of L. GDecoupled variant of M. HDecoupled variant of N. IDecoupled variant of O. JDRoute signal to a collection of signal functions using the supplied D routing function. If any of the wires inhibits, the whole network  inhibits. KABroadcast signal to a collection of signal functions. If any of ? the wires inhibits, then the whole parallel network inhibits. L>Recurrent parallel routing switch. This combinator acts like  J@, but takes an additional event signal, which can transform the 2 set of wires. This is the most powerful switch.  Just like J1 if any of the wires inhibits, the whole network  inhibits. M@Recurrent parallel broadcast switch. This combinator acts like  K@, but takes an additional event signal, which can transform the  set of wires.  Just like K1 if any of the wires inhibits, the whole network  inhibits. N>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. OCThis 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. FGHIJKLMNO OINHKMGJLF FGHIJKLMNO Ertugrul Soeylemez <es@ertes.de>P#Messages to wire managers (see the ^ wire). Q2Delete the wire with the given key, if it exists. R?Add the given wire with the given key. If the manager already . has a wire with this key, it is overwritten. S&Perform two operations in an instant. T+Do nothing. Send this, if the wire shouldn't be changed in an  instant. UCMake the given wire context-sensitive. The left input signal is a F context and the argument wire will mutate individually for each such  context. CInherits inhibition and feedback behaviour from the current context's  wire. VSimplified variant of U . Takes a context signal only. WSpecialized version of U". Use this one, if your contexts  are s and you have a lot of them. CInherits inhibition and feedback behaviour from the current context's  wire. XSimplified variant of W . Takes a context signal only. YSame as U+, but with a time limit. The first signal F specifies a threshold and the second signal specifies a maximum age. C If the current number of contexts exceeds the threshold, then all 1 contexts exceeding the maximum age are deleted. CInherits inhibition and feedback behaviour from the current context's  wire. ZSimplified variant of Y. Takes a context signal  only. [Specialized version of Y. Use this one, if your  contexts are s and you have a lot of them. CInherits inhibition and feedback behaviour from the current context's  wire. \Simplified variant of [. Takes a context signal  only. ]1Choose a new unique identifier at every instant. $Never inhibits. Feedback by delay. ^DWire manager, which can be manipulated during the session. This is 0 a convenient alternative to parallel switches. EThis wire manages a set of subwires, each indexed by a key. Through F messages new subwires can be added and existing ones can be deleted. @Inhibits, whenever one of the managed wires inhibits. Inherits 1 feedback behaviour from the worst managed wire. <The monoid instance can be used to combine multiple manager D operations. They are performed from left to right. This instance < tries hard to optimize operations away without sacrificing  performance. PQRSTUVWXYZ[\]^PTSRQ^UWY[VXZ\]PTSRQQRSTUVWXYZ[\]^ Ertugrul Soeylemez <es@ertes.de>_6Impure noise between 0 (inclusive) and 1 (exclusive). Never inhibits. `7Impure noise between -1 (inclusive) and 1 (exclusive). Never inhibits. aImpure noise. Never inhibits. b8Impure noise between 0 (inclusive) and the input signal C (exclusive). Note: The noise is generated by multiplying with a  ", hence the precision is limited. $Never inhibits. Feedback by delay. c Pure noise. For impure wires it' s recommended to use the impure  noise generators. Never inhibits. d+Pure noise in a range. For impure wires it's recommended to use  the impure noise generators. $Never inhibits. Feedback by delay. eImpure random boolean. Never inhibits. _`abcde_`abecd_`abcde Ertugrul Soeylemez <es@ertes.de>f<Execute the IO action in the input signal at every instant. ENote: If the action throws an exception, then this wire inhibits the  signal. %Inhibits on exception. No feedback. gDLift the given monadic computation to a wire. The action is run at  every instant. CNever inhibits. Same feedback behaviour as the given computation. fgfgfg  Ertugrul Soeylemez <es@ertes.de>hAProduce a signal once after the specified delay and never again.  The event'0s value will be the input signal at that point. i@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. jBEvent 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. k6Delay 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. lADelay 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. m@Drop the given number of events, before passing events through. n?Timed event gate for the right signal, which begins closed and > opens after the time interval in the left signal has passed. o?Produce a single event with the right signal whenever the left  signal switches from  to . p;Whenever the predicate in the first argument switches from   to ; for the input signal, produce an event carrying the value E given by applying the second argument function to the input signal. q?Produce a single event carrying the value of the input signal, ' whenever the input signal switches to . r Variant of 2, which produces a  instead of an  . <Never inhibits. Same feedback properties as argument wire. s/Never produce an event. This is equivalent to 9 , but with 4 a contextually more appropriate exception message. t$Suppress the first event occurence. u7Produce an event at the first instant and never again. vEmits a '()'7 signal each time the signal interval passes. This is  a simpler variant of w. w?Emit the right signal event each time the left signal interval  passes. xDEach time the signal interval passes emit the next element from the  given list. yBPass only the first given number of events. Then suppress events  forever. zCTimed event gate for the right signal, which starts open and slams 2 shut after the left signal time interval passed. hijklmnopqrstuvwxyzhiopqsuvwxjklmntyzrhijklmnopqrstuvwxyz  Ertugrul Soeylemez <es@ertes.de>{Differentiate over time. Inhibits at first instant. |?Differentiate over time. The argument is the value before the  first instant. $Never inhibits. Feedback by delay. }@Integrate over time. The argument is the integration constant. $Never inhibits. Feedback by delay. {|}{|}{|}  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. $Never inhibits. Feedback by delay. 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. $Never inhibits. Feedback by delay. 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. Never inhibits. CCollects all the inputs ever received. This wire uses O(n) memory F and runs in O(log n) time, where n is the number of inputs collected  so far. $Never inhibits. Feedback by delay. >Emits an event, whenever the input signal changes. The event C contains the last input value and the time elapsed since the last  change. Inhibits on no change. Return the high peak. $Never inhibits. Feedback by delay. AReturns the time delta between now and when the input signal was C last seen. This wire uses O(n) memory and runs in O(log n) time, 3 where n is the number of inputs collected so far. 4Inhibits, when a signal is seen for the first time. Return the low peak. $Never inhibits. Feedback by delay. 9Return the high peak with the given comparison function. $Never inhibits. Feedback by delay. ~ ~ ~  Ertugrul Soeylemez <es@ertes.de>  !"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"&$% '(   !"#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr s t u v w x y z { | } ~   netwire-1.2.7FRP.NetWire.WireFRP.NetWire.SessionFRP.NetWire.PureFRP.NetWire.ToolsFRP.NetWire.SwitchFRP.NetWire.RequestFRP.NetWire.RandomFRP.NetWire.IOFRP.NetWire.EventFRP.NetWire.CalculusFRP.NetWire.Analyze FRP.NetWire WireState PureState ImpureStatewsDTimewsRndGenwsReqVarWireWGenWArrTimeSFOutputInhibitExceptionappEventappFirst appFrozencleanupWireState inhibitEx initWireStatemkFixmkGennoEventtoGenSession sessFreeVar sessStateRef sessTimeRef sessWireRef sessionStart sessionStopstepWire stepWireDelta stepWireTime stepWireTime'testWire testWireStrwithWirestepSF stepWirePure-->>---=>>=-accumconstantdelaydiscretedupexhibitfmodforbidforbid_freezeholdidentityinhibitinhibit_inject injectMaybekeepmapArequirerequire_sampleswallowswaptimetimeFrom drpSwitch drpSwitchBdrSwitchdSwitchparparBrpSwitch rpSwitchBrSwitchswitchMgrMsgMgrDelMgrAddMgrMultiMgrNopcontextcontext_ contextInt contextInt_contextLimitedcontextLimited_contextLimitedIntcontextLimitedInt_ identifiermanagernoisenoise1noiseGennoiseR pureNoise pureNoiseR wackelkontaktexecuteliftWireafter afterEachdam delayEventsdelayEventsSafe dropEventsdropForedgeedgeByedgeJusteventnevernotYetonce periodically repeatedlyrepeatedlyList takeEventstakeFor derivativederivativeFromintegralavgavgAllavgFpscollectdiffhighPeaklastSeenlowPeakpeakBybase Data.MaybeJust GHC.Exception SomeExceptionwbothwcompose wsidebyside $fFunctorWire$fCategoryWire$fArrowZeroWire$fArrowPlusWire$fArrowLoopWire$fArrowChoiceWire$fArrowApplyWire Control.Arrowapp $fArrowWire$fApplicativeWire$fAlternativeWire ArrowPlus ArrowZeromonad-control-0.2.0.3Control.Monad.IO.ControlMonadControlIOGHC.ShowShow withBlockGHC.ListiterateControl.Exception.Basetry Data.EitherEitherLeftMaybeNothingghc-prim GHC.TypesInt$fMonoidMgrMsgDoubleFalseTruetransformers-0.2.2.0Control.Monad.IO.ClassMonadIO liftIOOp_liftIOOp controlIO liftControlIOliftIOData.Functor.Identity runIdentityIdentity