#w      !"#$%&'()*+,-./0123456789: ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _`abcdefghijklmnopqrstuvwxyz{|}~ Ertugrul Soeylemez <es@ertes.de> Safe-Inferred=A timed map is a map with an additional index based on time. /Remove all elements older than the given time. 4Remove all but the given number of latest elements. *Deletes the given key from the timed map. Like 5, but with a default value, if the key is not in the  map. Empty timed map. Insert into the timed map. (Look up the given key in the timed map.        Ertugrul Soeylemez <es@ertes.de>None8A wire is a signal function from an input value of type a that  either produces an output value of type b or inhibits with a  value of type e. The underlying monad is m. Time.  Variant of  without the  constraint. Using  is  preferable.  Variant of  without the  constraint. Using  is  preferable. 1Map the given function over the raw wire output. 9Construct a pure stateless wire from the given function. >Construct a stateless effectful wire from the given function. 5Construct an effectful wire from the given function. /Construct a pure wire from the given function. <Construct a pure wire from the given local state transision  function. ?Construct a monadic wire from the given local state transision  function.  Variant of  without the  constraint. Using   is preferable. &Perform an instant of the given wire. +Perform an instant of the given pure wire. '% Ertugrul Soeylemez <es@ertes.de>None ?The most general accumulator. This wire corresponds to a left  scan.  Depends: previous instant. !Non-delaying variant of  .  Depends: current instant. "Like  2, but the accumulation function also receives the  current time delta.  Depends: previous instant. #Non-delaying variant of ".  Depends: current instant. $CCounts from the given vector adding the current input for the next  instant.  Depends: previous instant. %#Enumerates from the given element. &6Apply the input function continously. Corresponds to iterate for  lists. 'Like iterate2, but the accumulation function also receives the  current time delta. (Running  sum.  Depends: previous instant. )Corresponds to unfoldr for lists. B Depends: current instant, if the unfolding function is strict in  its second argument. *Like )2, but the accumulation function also receives the  current time delta. B Depends: current instant, if the unfolding function is strict in  its third argument. !"#$%&'()* !"#$%&'()* "!#&')*$%( !"#$%&'()* Ertugrul Soeylemez <es@ertes.de>None+DIncoming values are placed in a set, which is discharged element by G element. Lower values are served first. Duplicate values are served  once. .Note: Incorrect usage can lead to congestion. & Complexity: O(n) space wrt bag size.  Depends: current instant. " Inhibits: when the bag is empty. ,CFirst in, first out. The input list is placed on the right end of F a queue at every instant, giving earlier elements a higher priority. 5 The queue is discharged item by item from the left. .Note: Incorrect usage can lead to congestion. ( Complexity: O(n) space wrt queue size.  Depends: current instant. . Inhibits: when the queue is currently empty. -BLast in, first out. The input list is placed on a stack at every C instant, giving earlier elements a higher priority. The stack is ' discharged item by item from the top. .Note: Incorrect usage can lead to congestion. ( Complexity: O(n) space wrt stack size.  Depends: current instant. . Inhibits: when the stack is currently empty. +,-+,-+,-+,- Ertugrul Soeylemez <es@ertes.de>None.CProduce the most recent inputs in the given time window. The left @ input signal is the sample, the right input signal is the time  window. E Complexity: O(n), where n the number of samples in the time window.  Depends: current instant. 4Keep the input signal of the first instant forever. Depends: first instant. /@Sample the left signal at discrete intervals given by the right  signal. & Depends: instant of the last sample. 06Produce up to the given number of most recent inputs. 2 Complexity: O(n), where n is the given argument.  Depends: current instant. 1Same as fmap toList . window. ./01./01./01./01 Ertugrul Soeylemez <es@ertes.de>None2,Convenience function to add another signal.  Depends: current instant. 3One-instant delay.  Depends: Previous instant. 4DActs like the identity wire, but forces evaluation of the signal to  WHNF.  Depends: current instant. 5DActs like the identity wire, but forces evaluation of the signal to  NF.  Depends: current instant. 6,Convenience function to add another signal.  Depends: current instant. 23456234562364523456 Ertugrul Soeylemez <es@ertes.de>None7,Outputs the time delta to the last instant.  Depends: time. 8?Outputs the current local time passed since the first instant.  Depends: time. 9COutputs the current local time passed since the first instant with  the given offset.  Depends: time. 789789789789  Ertugrul Soeylemez <es@ertes.de>None :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 wrt number of samples.  Depends: current instant. ;BCalculate the average of the input signal over all samples. This 2 is usually not what you want. In most cases the : wire is  preferable.  Depends: current instant. <ACalculate the average number of instants per second for the last D given number of instants. In a continuous game or simulation this C corresponds to the average number of frames per second, hence the  name. 0 Complexity: O(n) space wrt number of samples.  Depends: time. =Like <3, but sample in discrete intervals only. This can E greatly enhance the performance, when you have an inefficient clock  source. 0 Complexity: O(n) space wrt number of samples.  Depends: time. >Same as :5, but with a sampling interval. This can be used to 8 increase the performance, if the input is complicated. / Complexity: O(n) space wrt number of samples.  Depends: current instant. ?ACollect all distinct inputs ever received together with a count. ? Elements not appearing in the map have not been observed yet.  Complexity: O(n) space.  Depends: current instant. @1Outputs the first local time the input was seen. E Complexity: O(n) space, O(log n) time wrt number of samples so far. ! Depends: current instant, time. A High peak.  Depends: current instant. B6Outputs the local time the input was previously seen. E Complexity: O(n) space, O(log n) time wrt number of samples so far. ! Depends: current instant, time. 8 Inhibits: if this is the first time the input is seen. C Low peak.  Depends: current instant. D?Output the peak with respect to the given comparison function.  Depends: current instant. :;<=Sampling interval. Number of samples. >Sampling interval. Number of samples. ?@ABCD :;<=>?@ABCD :>;<=ACD?@B :;<=>?@ABCD  Ertugrul Soeylemez <es@ertes.de>NoneEDifferential for objects. F%Specify velocity (units per second). G;Teleport to the given position instantly (velocity will be  unchanged). HAccelerate (units per second). I8Object state. This includes the position and velocity. K Position. L Velocity. MDerivative. Receives x and dt and calculates the change rate  dx/dt . Note that dt, despite its name does not have to be time. .The exception handler function is called when dt is zero. That  function's result is the wire'%s output for those instants. If you  don'8t want to handle exceptional cases specially, just pass (^/) as  the handler function.  Depends: current instant. NSame as M, but with respect to time.  Depends: current instant. ODIntegral wire. Produces position from velocity in the sense of the  given vector space.  Depends: previous instant. PNon-delaying variant of O.  Depends: current instant. QSame as O, but with respect to time.  Depends: previous instant. RNon-delaying variant of Q.  Depends: current instant. S Variant of O&, where you can specify a post-update G function, which receives the previous position as well as the current D (in that order). This is useful for limiting the output (think of  robot arms that can't be moved freely). C Depends: current instant if the post-update function is strict in . its first argument, previous instant if not. TNon-delaying variant of S.  Depends: current instant. USame as S, but with respect to time.  Depends: previous instant. VNon-delaying variant of U.  Depends: current instant. W@Objects are generalized integrals. They are controlled through  velocity and/8or acceleration and can be collision-checked as well as  instantly teleported. ?The post-move update function receives the world state and the D current object state. It is applied just before the wire produces E its output. You can use it to perform collision-checks or to limit  the velocity. Note that teleportation doesn't change the velocity.  Depends: current instant. XSame as W, but with respect to time.  Depends: current instant. EFGHIJKLM6Handle exceptional change rates (receives dx and dt). Initial position. NHandle exceptional cases. Initial position. OPQRSPost-update function. Initial value. TPost-update function. Initial value. UVWPost-move update function. Initial state. XPost-move update function. Initial state. EFGHIJKLMNOPQRSTUVWXOQSUPRTVMNWXIJKLEHGFEHGFIJKLMNOPQRSTUVWX  Ertugrul Soeylemez <es@ertes.de>NoneYBThe argument function turns the input signal into a context. For 8 each context the given base wire evolves individually. ANote: Incorrect usage can lead to a memory leak. Consider using  [ instead. @ Complexity: O(n) space, O(log n) time wrt to number of stored  contexts.  Depends: current instant. + Inhibits: when the context wire inhibits. ZSame as Y,, but keeps only the latest given number of  contexts. [Same as Y0, but applies the given cleanup function to the F context map at every instant. This can be used to drop older wires. \@Broadcast the input signal to all of the given wires collecting E their results. Each of the given subwires is evolved individually. + Depends: like the most dependent subwire. . Inhibits: when any of the subwires inhibits. Y,Function to turn the signal into a context.  Base wire. ZSignal to context.  Maximum number of latest wires.  Base wire. [,Function to turn the signal into a context. 8Cleanup function. Receives the current instant number, - the current local time and the current map.  Base wire. \YZ[\YZ[\YZ[\  Ertugrul Soeylemez <es@ertes.de>None]=Performs the argument wire with the input time delta. It is F stepped often enough to catch up with the main wire. The individual = results are combined as given by the fold (second and third  argument). @ Complexity: O(n) time wrt stepping the subwire, where n is the + number of times the subwire is stepped. * Depends: like argument wire, if stepped. & Inhibits: When the fold results in a . ]Time delta for the subwire. Folding function. Fold base value. Subwire to step. ]]]  Ertugrul Soeylemez <es@ertes.de>None^ The wire  ifW p x y acts like x, when the predicate p is true,  otherwise y. 5 Complexity: like the predicate and the chosen wire. 2 Depends: like the predicate and the chosen wire. ; Inhibits: when the predicate or the chosen wire inhibits. ^ Predicate.  If true.  If false. ^^^ Ertugrul Soeylemez <es@ertes.de>None_Infix variant of `. 6This operator is right-associative with precedence 1. `@Behaves like the first wire until it inhibits. Switches to the 0 second wire as soon as the first one inhibits. The `2 operator is right-associative with precedence 1. & Depends: like currently active wire. ? Inhibits: when switched to second wire and that one inhibits.  Time: switching restarts time. a9If the first argument wire produces a wire, switch to it E immediately. If not, evolve the current wire. The second argument  wire is the initial wire. 9 Depends: like event wire and the currently active wire. 4 Inhibits: when the currently active wire inhibits.  Time: switching restarts time. bBWhenever the given wire inhibits, a new wire is constructed using  the given function. & Depends: like currently active wire.  Time: switching restarts time. _`Wire to start with. Wire to switch into. a Produces a wire to switch into. Initial wire. bWire selection function. Initial wire. _`ab`ab__`ab Ertugrul Soeylemez <es@ertes.de>NonecAMaps the given function over the time deltas for the given wire. ! Complexity: like argument wire.  Depends: like argument wire.  Inhibits: like argument wire. cccc Ertugrul Soeylemez <es@ertes.de>NonedPure wires using f as the inhibition monoid. eMonadic wires using f as the inhibition monoid. f(Monoid for the last occurred exception. ge equivalent of i. hd equivalent of i. iDEvent wires are wires that act like identity wires, but may inhibit 4 depending on whether a certain event has occurred. jCType-restricted identity wire. This is useful to specify the type  of a signal.  Depends: current instant. k>Utility to specify the input type of a wire. The argument is 6 ignored. For types with defaulting you might prefer l. ' inAs (Proxy :: Proxy Double) highPeak lDUtility to specify the input type of a wire. The first argument is F ignored. This is useful to make use of defaulting or when writing a " dummy value is actually shorter.  inLike (0 :: Double) highPeak mCType-restricted identity wire. This is useful to specify the type ( of a signal. The argument is ignored.  Depends: current instant. n?Utility to specify the output type of a wire. The argument is 6 ignored. For types with defaulting you might prefer o. & outAs (Proxy :: Proxy Double) noiseM oBUtility to specify the output type of a wire. The first argument G is ignored. This is useful to make use of defaulting or when writing $ a dummy value is actually shorter.  outLike (0 :: Double) noiseM p proxy for use with k or n. q proxy for use with k or n. r proxy for use with k or n. s proxy for use with k or n. t proxy for use with k or n. defghijklmnopqrstdefghijklmnopqrstfighedjklmnopqrstdefghijklmnopqrst Ertugrul Soeylemez <es@ertes.de>Noneu#Branch according to the unterlying  instance. Note that & this wire branches at every instant.  Depends: current instant. v Variant of x for the f inhibition monoid.  Depends: current instant. 0 Inhibits: when the action throws an exception. w Variant of y for the f inhibition monoid. < Depends: current instant, if the given function is strict. 0 Inhibits: when the action throws an exception. x3Perform the input monadic action at every instant.  Depends: current instant. 0 Inhibits: when the action throws an exception. y3Perform the given monadic action at every instant. < Depends: current instant, if the given function is strict. 0 Inhibits: when the action throws an exception. z,Perform the input monadic action in a wire.  Depends: current instant. {Quits the current branch using . |@Acts like identity in the first instant, then quits the current  branch using .  Depends: first instant. uvwx-Turns an exception into an inhibition value. y-Turns an exception into an inhibition value. Action to perform. z{|uvwxyz{|zvwxyu{|uvwxyz{| Ertugrul Soeylemez <es@ertes.de>None }ATry both wires combining their results with the given functions.  Like argument wires. $ Inhibits: when both wires inhibit. ~Semigroup version of }. @If the argument wire inhibits, inhibit with the given exception  instead.  Depends: like argument wire.  Inhibits: like argument wire. BPrevent a wire from inhibiting. Instead produce a signal wrapped  in . Note: You probably shouldn't use this function.  Depends: like argument wire. @Prevent a wire from inhibiting. Instead produce the inhibition  value. Note: You probably shouldn't use this function.  Depends: like argument wire. 1Prevent a wire from inhibiting. Instead produce  , if the  wire inhibited. Note: You probably shouldn't use this function.  Depends: like argument wire. BHold the latest event. Produces the last produced value starting  with the given one.  Depends: like argument wire. DHold the event. Once the argument wire produces the produced value 1 is held until the argument wire produces again.  Depends: like argument wire. @ Inhibits: until the argument wire produces for the first time. @Hold the event for the given amount of time. When the argument C wire produces, the produced value is kept for the given amount of D time. If the wire produces again while another value is kept, the  new value takes precedence.  Depends: like argument wire.  Inhibits: as described. <Hold the event for the given number of instances. When the B argument wire produces, the produced value is kept for the given F number of instances. If the wire produces again while another value * is kept, the new value takes precedence.  Depends: like argument wire.  Inhibits: as described. ;Act like the identity wire, if the argument wire inhibits. ) Inhibit, if the argument wire produces.  Depends: like argument wire. ( Inhibits: when argument wire produces. } Only left.  Only right. Both.  First wire.  Second wire. ~ }~ }~ }~ Ertugrul Soeylemez <es@ertes.de>NoneYZ[\]^_`abc}~ Ertugrul Soeylemez <es@ertes.de>None 3A session value contains time-related information. =Construct a session using real time. This session type uses  5. If you have a faster time source, you may want to  use ' instead and construct your own clock. AConstruct a simple counter session. The time delta is the given  argument at every instant. %Construct a frozen session. Same as  0. AConstruct a generic session from the given initial session value G and the update function. You can use this function to implement your  own clock. 7If you just want to use real time, you may want to use  . @Perform an instant of the given wire as part of a wire session. DThis is a convenience function. You can also construct time deltas ! yourself entirely circumventing . This can be useful, if 1 there is really no need for an effectful monad. Like 2, but throws an exception instead of returning an   value. Like , but for pure wires. Like 2, but throws an exception instead of returning an   value. testPrint n int mx prints a formatted version of mx to stderr,  if n is zero. It returns mod (succ n) int . Requires n >= 0 to  work properly. 'This function is used to implement the printing interval used in   and  testWireM. BRuns the given wire continuously and prints its result to stderr. , Runs forever until an exception is raised. The printing interval sets the instants/printing ratio. The higher D this value, the less often the output is printed. Examples: 1000 D means to print at every 1000-th instant, 1 means to print at every  instant. Like , but for pure wires. Time delta for every instant. Wire to step. Current session state.  Input value. Wire to step. Current session state.  Input value. Wire to step. Current session state.  Input value. Wire to step. Current session state.  Input value. Printing interval.  between instants. Input generator. Initial session value. Wire to test. Printing interval.  between instants. Input generator. Initial session value. Wire to test.   Ertugrul Soeylemez <es@ertes.de> Safe-Inferred'Monads with a random number generator. Get a random number. (Get a random number in the given range. "Class for injectable values. See  .  Ertugrul Soeylemez <es@ertes.de>None(Produce after the given amount of time. 0 Depends: current instant when producing, time. 6 Inhibits: until the given amount of time has passed. ,Produce after the given number of instants. * Depends: current instant when producing. : Inhibits: until the given number of instants has passed. DInhibit until the given predicate holds for the input signal. Then  produce forever. C Depends: current instant, if the predicate is strict. Once true,  on current instant forever. - Inhibits: until the predicate becomes true. >Produce when the signal has changed and at the first instant.  Depends: current instant. ? Inhibits: after the first instant when the input has changed. 9Produces once whenever the given predicate switches from  to  .  Depends: current instant. 9 Inhibits: when the predicate has not just switched from  to  . DProduce once periodically. The production periods are given by the  argument list. When it's [1,2,3] it produces after one second, C then after two more seconds and finally after three more seconds. 6 When the list is exhausted, it never produces again. 0 Depends: current instant when producing, time. ( Inhibits: between the given intervals.  Variant of ) in number of instants instead of amount  of time. * Depends: current instant when producing. ( Inhibits: between the given intervals. &Produce for the given amount of time. 0 Depends: current instant when producing, time. 6 Inhibits: after the given amount of time has passed. Same as . *Produce for the given number of instants. * Depends: current instant when producing. : Inhibits: after the given number of instants has passed. Inhibit with the given value.  Inhibits: always. BInject the input signal. Please keep in mind that in application E code it is almost always wrong to use this wire. It should only be ' used to interact with other frameworks/abstractions, and even then  it's probably just a last resort. 6When you want to write your own wires, consider using  or the  various variants of it.  Depends: current instant. * Inhibits: depending on input signal (see ). Inhibit once. 3 Depends: current instant after the first instant. ! Inhibits: in the first instant. Produce once. 0 Depends: current instant in the first instant. $ Inhibits: after the first instant. 8Produce once periodically with the given time interval. 0 Depends: current instant when producing, time. " Inhibits: between the intervals. CProduce once periodically with the given number of instants as the  interval. * Depends: current instant when producing. " Inhibits: between the intervals. Same as . DProduce when the given predicate on the input signal does not hold. 6 Depends: current instant if the predicate is strict. ' Inhibits: When the predicate is true. BProduce until the given predicate on the input signal holds, then  inhibit forever. 7 Depends: current instant, if the predicate is strict. : Inhibits: forever as soon as the predicate becomes true. <Produce when the given predicate on the input signal holds. 6 Depends: current instant if the predicate is strict. ( Inhibits: When the predicate is false. BProduce while the given predicate on the input signal holds, then  inhibit forever. 7 Depends: current instant, if the predicate is strict. ; Inhibits: forever as soon as the predicate becomes false.  Ertugrul Soeylemez <es@ertes.de>NonePure noise generator. Noise generator. Ranged noise generator.  Depends: current instant. Pure ranged noise generator.  Depends: current instant. 4Event: Occurs randomly with the given probability.  Inhibits: wackelkontaktM p inhibits with probability 1 - p. 4Event: Occurs randomly with the given probability.  Inhibits: wackelkontaktM p inhibits with probability 1 - p. !Initial random number generator. !Initial random number generator. Occurrence probability. !Initial random number generator. Occurrence probability.  Ertugrul Soeylemez <es@ertes.de>None\ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXuvwxyz{| Ertugrul Soeylemez <es@ertes.de>None      !"#$%&'()*+,-./0123 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4 !" !# !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV W X Y Z [ \ ] ^ _ ` a b c d e f f g h i j k l m n o p q r s t u v w x y z{|}~%*          !"#$%&& ' ( ) * + , - . / 0 1 2 2 3 4 5 6 7 8 9 : ; < < =>?@ABCDEFGEFHEFIEFJEFKEFLEFMEFNEFOEFPEFQEFREFSEFTEFUEFVEFWXYZXYZ[ netwire-4.0.2 Control.WireControl.Wire.TimedMapControl.Wire.WireControl.Wire.Prefab.AccumControl.Wire.Prefab.QueueControl.Wire.Prefab.SampleControl.Wire.Prefab.SimpleControl.Wire.Prefab.TimeControl.Wire.Prefab.AnalyzeControl.Wire.Prefab.MoveControl.Wire.Trans.CombineControl.Wire.Trans.EmbedControl.Wire.Trans.SimpleControl.Wire.Trans.SwitchControl.Wire.Trans.TimeControl.Wire.TypesControl.Wire.Prefab.EffectControl.Wire.Trans.EventControl.Wire.SessionControl.Wire.ClassesControl.Wire.Prefab.EventControl.Wire.Prefab.NoiseControl.Wire.TransinjectControl.Wire.Prefabbase GHC.Exception SomeException fromException toException Exceptionprofunctors-3.0Data.Profunctorrmaplmap ProfunctorTimedMapcleanupcutdeletefindWithDefaultemptyinsertlookupWireWPureWGenTimeconstantidentity mapOutputmkFixmkFixMmkGenmkPuremkStatemkStateMneverstepWire stepWirePaccumaccum1accumTaccumT1 countFrom enumFromWiterateW iterateWTmconcatWunfoldunfoldTbagfifolifokeepsamplewindow windowListappenddelayforceforceNFprependdtimetimetimeFromavgavgAllavgFps avgFpsIntavgIntcollect firstSeenhighPeaklastSeenlowPeakpeakBy ObjectDiffVelocityPosition Accelerate ObjectState objPosition objVelocity derivative derivative_integral integral1 integral_ integral1_ integralLim integralLim1 integralLim_ integralLim1_objectobject_context contextLatest contextLimit multicastembedifW-->andThenswitchswitchBymapTimeWirePWireM LastExceptionEventMEventPEventasinAsinLikelikeoutAsoutLikepDoublepFloatpIntpIntegerpStringbranchexecuteexecute_ executeWith executeWith_performquitquitWitheitherE<||>eventexhibitgotEventholdhold_holdForholdForInotESession sessionUpdate clockSessioncounterSession frozenSession genSession stepSession stepSession_ stepSessionP stepSessionP_ testPrinttestWire testWireP MonadRandom getRandom getRandomR InjectabletoSignalafterafterIasSoonAschangededgeeventseventsIforforbidforIinhibitnotYetonce periodically periodicallyIrequireunlessuntilwhenwhilenoisenoiseMnoiseRMnoiseR wackelkontaktwackelkontaktMControl.ApplicativepureGHC.BaseMonadControl.Categoryid$fVectorSpaceWire $fReadWire$fProfunctorWire $fMonoidWire$fIsStringWire $fNumWire$fInnerSpaceWire$fHasNormalWire$fHasCross3Wire$fHasCross2Wire $fFunctorWire$fFractionalWire$fFloatingWire$fCategoryWire$fArrowZeroWire$fArrowPlusWire$fArrowLoopWire$fArrowChoiceWire $fArrowWire$fApplicativeWire$fAlternativeWire$fAffineSpaceWire$fAdditiveGroupWire Data.MonoidMonoid Data.EitherLeftghc-prim GHC.TypesDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerString Control.Monad MonadPlusmzero Data.MaybeMaybeFalse time-1.4.0.1Data.Time.ClockgetCurrentTimeEither GHC.Conc.IO threadDelay$fMonadRandomIO$fInjectableeEither$fInjectableeMaybeTrue Control.Arrowarrfirstapp|||loop ApplicativeoptionalliftA3liftA2liftA<**><**><*>manysome<|> AlternativegetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListleftApp^<<<<^>>^^>>returnA&&&***secondArrow runKleisliKleisli zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoice ArrowApply ArrowMonad ArrowLoop Data.Functor<$>>>><<<.Category<$random-1.0.1.1 System.Random getStdRandom newStdGen getStdGen setStdGenmkStdGensplitgenRangenext RandomGenStdGenrandomIO randomRIOrandomsrandomRsrandomrandomRRandom tagged-0.4.4 Data.ProxyProxy