C 7      !"#$%&'()*+,-./012345678 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Ertugrul Soeylemez <es@ertes.de> DA timed map is a regular map with timestamps and a timestamp index.  Underlying map with timestamps. Timestamp index. Find a value with default. Default, if key is not found. Key to look up. Map to query. Retrieved or default value. The empty timed map. Insert a value into the map.  Timestamp. Key. Value. Original map. Map with the value added. 5Delete all items older than the specified timestamp. ?Delete at least as many oldest items as necessary to limit the  map'?s size to the given value. If you have multiple keys with the D same timestamp, this function can delete more keys than necessary. %Look up the value for the given key.      Ertugrul Soeylemez <es@ertes.de> Ertugrul Soeylemez <es@ertes.de> @Distribute an input value over a list of arrow computations and  collect the results.  Duplicate a value into a tuple. .Lift an arrow computation to lists of values.     Ertugrul Soeylemez <es@ertes.de> ,Monads supporting random number generation. ,Returns a random number for the given type. ,Returns a random number in the given range. Monads with a clock. 8Current time in some monad-specific frame of reference. 3Arrows which support running monadic computations. 1Run the input computation and output its result. Kleisli arrows, which have  at their base. AInstance for the system time. This is intentionally specific to : allow you to define better instances with custom monads.     Ertugrul Soeylemez <es@ertes.de>!7Convert the given wire to a generic arrow computation. ;Create a pure wire from the given transformation function. Stateful variant. Stateless variant. Monad-based wires. 9Create a wire from the given transformation computation. Stateful variant. Stateless variant. Signal networks. &Convenience type for wire exceptions. 1Turn an arbitrary exception to a wire exception. !Turn a string into a  exception wrapped by  . "Map a function over the input. Map a function over the  value of an . #<Create a stateless wire from the given monadic computation. $9Convert the given wire to a generic monadic computation. Wire to convert.  Input value. 'Map a function over the output signal. Sequencing of wires. !The always inhibiting wire. The  zeroArrow is equivalent to  Control.Wire.Prefab.Event.never. BIf the underlying arrow is a writer arrow, then the wire arrow is  also a writer arrow. $Wire arrows are arrow transformers. AIf the underlying arrow is a state arrow, then the wire arrow is  also a state arrow. BIf the underlying arrow is a reader arrow, then the wire arrow is  also a reader arrow. %Combining possibly inhibiting wires. CValue recursion in the wire arrows. **NOTE**: Wires with feedback G must *never* inhibit. There is an inherent, fundamental problem with A handling the inhibition case, which you will observe as a fatal  pattern match error. When the target arrow is an , then the wire arrow is  also an ArrowKleisli. -Inhibition handling interface. See also the  Control.Wire.Trans.Exhibit and Control.Wire.Prefab.Event modules.  Support for one-instant delays. )Support for choice (signal redirection). Wire side channels. .Map a function signal over the output signal. Choice at the functor level.  !"#$#$ !" !"#$ Ertugrul Soeylemez <es@ertes.de>%<Print a wire result on one line at regular intervals (first : argument). The second argument is the interval counter. &!Print a wire result on one line. '/Turn a wire result into a string for printing. ('Performs an instant of the given wire. Wire to step. )3Performs an instant of the given monad-based wire. Wire to step. Input signal. *BIncrements. Results in 0, if the result is greater than or equal  to the first argument. +=Test a wire. This function runs the given wire continuously ' printing its output on a single line. /The first argument specifies how often the wire's result is printed. D If you specify 100 here, then the output is printed at every 100th  frame. Frames per output. Speed/accuracy tradeoff. Input generator. ,<Test a monad-based wire. This function runs the given wire 4 continuously printing its output on a single line. /The first argument specifies how often the wire's result is printed. D If you specify 100 here, then the output is printed at every 100th  frame. Frames per output. FPS/accuracy tradeoff. Input generator. %&'()*+,()+,%&'*%&'()*+, Ertugrul Soeylemez <es@ertes.de>-Run monadic actions. ..Run the input monadic action at each instant.  Depends: Current instant. ? Inhibits: Whenever the input computation throws an exception. /<Run the input monadic action at each instant. The argument ; function converts thrown exceptions to inhibition values.  Depends: Current instant. ? Inhibits: Whenever the input computation throws an exception. -./-./-././ Ertugrul Soeylemez <es@ertes.de>0>Queues incoming signals and acts as a dam outputting incoming F signals in a FIFO fashion (one-way pipe). Note: Incorrect usage can  lead to congestion.  Depends: current instant. $ Inhibits: when the queue is empty. 1>Queues incoming signals and acts as a dam outputting incoming G signals in a LIFO fashion (stack). Note: Incorrect usage can lead to  congestion.  Depends: current instant. $ Inhibits: when the queue is empty. 010101 Ertugrul Soeylemez <es@ertes.de>2:The constant wire. Outputs the given value all the time. 3CForce the input signal to weak head normal form, before outputting  it. Applies  to the input signal.  Depends: Current instant. 4=Force the input signal to normal form, before outputting it.  Applies  to the input signal.  Depends: Current instant. 58The identity wire. Outputs its input signal unchanged.  Depends: Current instant. 6Inject the given  value as a signal.  means  inhibition.  Depends: Current instant.  Inhibits: When input is . 7Inject the given  value as a signal.  means  inhibition.  Depends: Current instant.  Inhibits: When input is . 234567253467234567  Ertugrul Soeylemez <es@ertes.de>8>General accumulator. Outputs the argument value at the first D instant, then applies the input function repeatedly for subsequent  instants. This acts like the  function for lists.  Depends: current instant. 9@Apply the given function at the first instant. Then act as the  identity wire forever.  Depends: Current instant. :-Count upwards from the given starting value. ;ACount from the given starting value, repeatedly adding the input  signal to it.  Depends: current instant. 89:;8:;989:;  Ertugrul Soeylemez <es@ertes.de><9Split the wires in the sense of the underlying arrow. A thread D in this sense is called a branch. This makes most sense with some : logic monad (like a list monad transformer) wrapped in a   arrow. AWarning: Incorrect usage will cause space leaks. Use with care! =:Splits the wire into a branch for each given input value. / Additionally adds a single inhibiting branch. <Note: This wire splits at every instant. In many cases you  probably want to apply swallow" to it to split only in the first  instant. 2 Branches: As many as there are input values + 1.  Depends: Current instant. 6 Inhibits: Always in one branch, never in all others. >Quits the current branch.  Branches: Zero. ?@Acts like the identity wire in the first instant and terminates  the branch in the next.  Branches: One, then zero.  Depends: Current instant. <=>?<=>?<=>?=>?  Ertugrul Soeylemez <es@ertes.de>@2Wire transformers for handling inhibited signals. A Produces 1, whenever the argument wire produces, otherwise  .  Depends: like argument wire. B Produces 1, whenever the argument wire produces, otherwise   with the inhibition value.  Depends: like argument wire. C Produces 1, whenever the argument wire produces, otherwise  . , if . @ABC@ABC@ABCABC  Ertugrul Soeylemez <es@ertes.de>D.A wire thread is a concurrently running wire. True, when wire has quitted.  Thread id. #Set to true to terminate the wire. E;A wire thread manager keeps track of created wire threads. FCA wire channel allows you to send input to and receive output from  a concurrently running wire. Input channel. Output channel. G@Forking wire transformer. Creates a concurrent wire thread and & opens a communication channel to it. H*Feed a wire thread with additional input.  Depends: Current instant. I2Fork the input wire using the input wire manager. @Note: This wire forks at every instant. In many cases you will  want to use the swallow wire transformer with this.  Depends: Current instant. J)Asks the given wire for its next output.  Depends: Current instant. " Inhibits: When there is no data. K'Feed the given wire thread with input. LKill the given wire thread. $Perform a manager operation safely. MRead the given wire's next output. NStart a wire manager. O?Stop a wire manager terminating all threads it keeps track of. PConvenient wrapper around N and O. DEFGHIJKLMNOP GHIJENOPFKMDL DEFGHIJHIJKLMNOP  Ertugrul Soeylemez <es@ertes.de>QOverride input. R?Apply the given function to the input, until the argument wire  starts producing.  Depends: Like argument wire.  Inhibits: Like argument wire. S?Apply the given function to the input, until the argument wire  starts producing.  Depends: Like argument wire.  Inhibits: Like argument wire. QRSQRSQRRS Ertugrul Soeylemez <es@ertes.de>TBPeriodically produces an event. The period is given by the input C time delta and can change over time. The current time delta with E respect to the last production is significant. Does not produce at ; the first instant, unless the first delta is nonpositive.  Depends: Current instant. 0 Inhibits: Always except at the periodic ticks. UVDelay incoming events. W;Delays each incoming event (left signal) by the given time @ delta (right signal). The time delta at the instant the event  happened is significant.  Depends: Current instant. + Inhibits: When no delayed event happened. X;Delays each incoming event (left signal) by the given time A delta (middle signal). The time delta at the instant the event C happened is significant. The right signal gives a maximum number A of events queued. When exceeded, new events are dropped, until  there is enough room.  Depends: Current instant. + Inhibits: When no delayed event happened. YBProduces once as soon as the current global time is later than or 1 equal to the input global time and never again.  Depends: Current instant. 0 Inhibits: Always except at the target instant. Z[8Produces once after the input time interval has passed.  Depends: Current instant. 0 Inhibits: Always except at the target instant. \](Inhibits as long as the input signal is . Once it switches  to , it produces forever.  Depends: Current instant. & Inhibits: As long as input signal is , then never again. ^6Produces once whenever the input signal switches from  to  .  Depends: Current instant. : Inhibits: Always except at the above mentioned instants. _/Produces, whenever the current input signal is .  Depends: Current instant.  Inhibits: When input is . `@Never produces. Always inhibits with the current input signal.  Depends: Current instant.  Inhibits: Always. aNever produces. Equivalent to .  Inhibits: Always. b5Inhibit at the first instant. Then produce forever. ! Inhibits: At the first instant. c6Acts like the identity function once and never again. $ Inhibits: After the first instant. d/Produces, whenever the current input signal is .  Depends: Current instant.  Inhibits: When input is . e'Produce as long as the input signal is . Once it switches to  ', never produce again. Corresponds to  for lists.  Depends: Current instant. $ Inhibits: As soon as input becomes . 9Produces a single event occurence result, when the given  is  true. TUVWXYZ[\]^_`abcde[\YZVWXTU`a]^d_ebcTUUVWXWXYZZ[\\]^_`abcde Ertugrul Soeylemez <es@ertes.de>Random number wires. fGenerate random noise. g<Generate random noise in a certain range given by the input  signal.  Depends: Current instant. h9Generate a random boolean, where the input signal is the  probability to be .  Depends: Current instant. i!Generate random noise in range 0 <= x < 1. j"Generate random noise in range -1 <= x < 1. fghijfgijhfghij Ertugrul Soeylemez <es@ertes.de>k@Sample the right signal at discrete intervals given by the left  input signal. A Depends: Current instant (left), last sampling instant (right). lm.Keep the signal in the first instant forever.  Depends: First instant. klmklmkllm Ertugrul Soeylemez <es@ertes.de> n*Passes the system time to the given wire.  Depends: Like argument wire. ( Inhibits: When argument wire inhibits. o-Simplified variant without additional input. pFull variant. qBPasses the time passed since the first instant to the given wire.  Depends: Like argument wire. ( Inhibits: When argument wire inhibits. r-Simplified variant without additional input. sFull variant. t?Passes time deltas to the given wire with respect to the clock G represented by the underlying arrow. Using this wire transformer you @ can program in the more traditional AFRP way using time deltas = instead of time offsets. Note: The first time delta is 0.  Depends: Like argument wire. ( Inhibits: When argument wire inhibits. u-Simplified variant without additional input. vFull variant. nopqrstuv tuvnopqrs nopopqrsrstuvuv Ertugrul Soeylemez <es@ertes.de>wIntegrate over time.  Depends: Current instant. x9Calculates the derivative of the input signal over time.  Depends: Current instant. wxwxwx Ertugrul Soeylemez <es@ertes.de>y9Time deltas starting from the time of the first instant. z@Global time. Independent of switching. *System* refers to the 9 wire system, not the operating system, so this does not  necessarily refer to OS time. {Local time. Starts at the  AdditiveGroup notion of zero when  switching in. yz{yz{yz{ Ertugrul Soeylemez <es@ertes.de> |@Waits for the argument wire to produce and then keeps the first  produced value forever. A Depends: Like argument wire until first production. Then stops  depending. 5 Inhibits: Until the argument wire starts producing. }~@Samples the given wire at discrete frame count intervals. Only B runs the input through the wire, when the next sampling interval  starts. A Depends: Current instant (left), like argument wire at sampling  intervals (right). A Inhibits: Starts inhibiting when argument wire inhibits. Keeps , inhibiting until next sampling interval. BSamples the given wire at discrete time intervals. Only runs the A input through the wire, when the next sampling interval starts. A Depends: Current instant (left), like argument wire at sampling  intervals (right). A Inhibits: Starts inhibiting when argument wire inhibits. Keeps , inhibiting until next sampling interval. Hold signals. !Keeps the latest produced value.  Depends: Like argument wire. # Inhibits: Until first production. DKeeps the latest produced value. Produces the argument value until % the argument wire starts producing.  Depends: Like argument wire. |}~ ~|} |}}~ Ertugrul Soeylemez <es@ertes.de> BCalculate the average of the signal over the given number of last B samples. If you need an average over all samples ever produced,  consider using  instead. : Complexity: O(n) space, O(1) time wrt number of samples.  Depends: current instant. 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.  Depends: current instant. BCalculate the average number of frames per virtual second for the  last given number of frames. 3Please note that this wire uses the clock from the t instance / for the underlying arrow. If this clock doesn't represent real time, ! then the output of this wire won' t either. Same as 3, but samples only at regular intervals. This can G improve performance, if querying the clock is an expensive operation. Interval size. Number of Samples. ,Collects all distinct inputs ever received. D Complexity: O(n) space, O(log n) time wrt collected inputs so far.  Depends: current instant. BOutputs the last input value on every change of the input signal. 3 Acts like the identity wire at the first instant.  Depends: current instant. 1 Inhibits: on no change after the first instant. 8Reports the first global time the given input was seen. D Complexity: O(n) space, O(log n) time wrt collected inputs so far.  Depends: Current instant. +Outputs the high peak of the input signal.  Depends: Current instant. ?Reports the last time the given input was seen. Inhibits when % seeing a signal for the first time. D Complexity: O(n) space, O(log n) time wrt collected inputs so far.  Depends: Current instant. ' Inhibits: On first sight of a signal. *Outputs the low peak of the input signal.  Depends: Current instant. DOutputs the high peak of the input signal with respect to the given  comparison function.  Depends: Current instant.  Ertugrul Soeylemez <es@ertes.de>>-./0123456789:;<=>?TUVWXYZ[\]^_`abcdefghijklmwxyz{ Ertugrul Soeylemez <es@ertes.de>CDistribute the input signal over the given wires, evolving each of 5 them individually. Discards all inhibited signals. . Depends: as strict as the strictest subwire. Same as +, but with a time limit. The third signal A specifies a maximum age. Contexts not used for longer than the  maximum age are forgotten. = Depends: Like context wire (left), current instant (right).  Inhibits: Like context wire. >Make the given wire context-sensitive. The right signal is a A context and the wire will evolve individually for each context. = Depends: Like context wire (left), current instant (right).  Inhibits: Like context wire.  Ertugrul Soeylemez <es@ertes.de>BRemember the last produced value. Whenever an input is repeated, B the argument wire is ignored and the memoized result is returned 6 instantly. Note: inhibition will not be remembered.  Depends: Current instant. ; Inhibits: Like the argument wire for non-memoized inputs. DRemember the most recently produced values. You can limit both the D maximum age and the number of remembered values. The second input B value specifies the maximum age, the third specifies the maximum  number. %Note: Inhibtion is never remembered. ENote: Decreasing the size limit has O(n * log n) complexity, where n % is the difference to the old limit.  Depends: Current instant. E Inhibits: Whenever result is not cached and argument wire inhibits.  Ertugrul Soeylemez <es@ertes.de>0@ABCDEFGHIJKLMNOPQRSnopqrstuv|}~ Ertugrul Soeylemez <es@ertes.de>  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m nopqrstuvwxyz{|}~ _ ` a  netwire-3.1.0Control.Wire.TimedMapControl.Wire.ToolsControl.Wire.ClassesControl.Wire.TypesControl.Wire.SessionControl.Wire.Prefab.ExecuteControl.Wire.Prefab.QueueControl.Wire.Prefab.SimpleControl.Wire.Prefab.AccumControl.Wire.Prefab.SplitControl.Wire.Trans.ExhibitControl.Wire.Trans.ForkControl.Wire.Trans.SimpleControl.Wire.Prefab.EventControl.Wire.Prefab.RandomControl.Wire.Prefab.SampleControl.Wire.Trans.ClockControl.Wire.Prefab.CalculusControl.Wire.Prefab.ClockControl.Wire.Trans.SampleControl.Wire.Prefab.AnalyzeControl.Wire.Trans.CombineControl.Wire.Trans.MemoizeControl.Wire.InstancesControl.Wire.PrefabControl.Wire.Trans Control.WireTimedMaptmMaptmTimestmFindWithDefaulttmEmptytmInsert tmLimitAge tmLimitSizetmLookupdistAdupmapA MonadRandom getRandom getRandomR MonadClockgetTime ArrowKleisliarrMarrIO WireToGentoGenWirePuremkPure mkPureFixWireMWireGenmkGenmkFixWire LastExceptioninhibitException inhibitMsg mapInputMmkFixMtoGenMprintIntprintResshowResstepWire stepWireMsuccModtestWire testWireMWExecuteexecute executeWithfifolifoconstantforceforceNFidentityinject injectEventaccumatFirst countFrom countStepWSplitbranchquitquitWithWExhibiteventexhibitgotEvent WireThreadWireMgrWireChanWForkfeedWireforkWire queryWire feedWireChankillWireThread readWireChan startWireMgr stopWireMgr withWireMgrWOverrideInput--<>-- WPeriodically periodically WDelayEvents delayEventsdelayEventsSafeWAtatWAfterafterasSoonAsedgeforbidinhibitnevernotYetoncerequirewhilenoisenoiseR wackelkontaktnoiseFnoiseF1 WDiscretediscretekeep WWithSysTime passSysTime withSysTime WWithTimepassTimewithTimeWWithDTpassDTwithDTintegral derivativedtimesysTimetimeWSwallowswallow WSampleInt sampleIntWSamplesampleWHoldholdholdWithavgavgAllavgFps avgFpsIntcollectdiff firstSeenhighPeaklastSeenlowPeakpeakBy WDistribute distribute WContextLimit contextLimitWContextcontextWPurifypurifyWCachecacheghc-prim GHC.TypesIO$fMonadClockDoubleIObaseGHC.IO.Exception userErrormapLeft Data.EitherLeftEither $fFunctorWire$fCategoryWire$fArrowZeroWire$fArrowWriterwWire$fArrowTransformerWireKleisli$fArrowStatesWire$fArrowReaderrWire$fArrowPlusWire$fArrowLoopWire$fArrowKleislimWire$fArrowErroreWire$fArrowCircuitWire$fArrowChoiceWire $fArrowWire$fApplicativeWire$fAlternativeWireWmPureWmGenGHC.Primseqdeepseq-1.2.0.1Control.DeepSeqdeepseq Data.MaybeMaybeNothingGHC.Listiterate Control.ArrowKleisliJustRightTrueFalseisRight wtDoneVar wtThreadId wtQuitVar wmFreeVar wmThrsVar wcInputChan wcOutputChanmgrOp zeroArrow takeWhileorGoWithBoolWRandomarrows-0.4.4.0Control.Arrow.OperationstryInUnlessDefault newReader readState ArrowReaderstorefetch ArrowState newWriterwrite ArrowWriternewError tryInUnlesshandleraise ArrowErrordelay ArrowCircuitControl.Arrow.TransformerliftArrowTransformer