]/      !"#$%&'()*+,-./01234567 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de> Safe-Inferred+2346=EHKM<A timed map is a map with an additional index based on time..Remove all elements older than the given time. 3Remove all but the given number of latest elements. )Deletes the given key from the timed map. Like :, 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.       (c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM8A 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.0Map the given function over the raw wire output.8Construct a pure stateless wire from the given function.=Construct a stateless effectful wire from the given function.4Construct an effectful wire from the given function..Construct a pure wire from the given function.FConstruct a pure wire from the given local state transision function.IConstruct 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.'%(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM EThe most general accumulator. This wire corresponds to a left scan.Depends: previous instant. Like F, but the accumulation function also receives the current time delta. Depends: previous instant, time.!LCounts 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 iterateF, but the accumulation function also receives the current time delta.Depends: time.%Running  sum.Depends: previous instant.&Corresponds to unfoldr for lists.VDepends: current instant, if the unfolding function is strict in its second argument.'Like &F, but the accumulation function also receives the current time delta.[Depends: current instant, if the unfolding function is strict in its third argument, time.  !"#$%&'  !"#$%&'  #$&'!"%  !"#$%&'(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM(Incoming values are placed in a set, which is discharged element by 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.)First in, first out. The input list is placed on the right end of a queue at every instant, giving earlier elements a higher priority. 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.*Last in, first out. The input list is placed on a stack at every 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.()*()*()*()*(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM+Produce the most recent inputs in the given time window. The left input signal is the sample, the right input signal is the time window.CComplexity: O(n), where n the number of samples in the time window.Depends: current instant.3Keep the input signal of the first instant forever.Depends: first instant.,HSample the left signal at discrete intervals given by the right signal.$Depends: instant of the last sample.-5Produce up to the given number of most recent inputs.0Complexity: O(n), where n is the given argument.Depends: current instant..Same as fmap toList . window.+,-.+,-.+,-.+,-.(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM/+Convenience function to add another signal.Depends: current instant.0One-instant delay.Depends: Previous instant.1JActs like the identity wire, but forces evaluation of the signal to WHNF.Depends: current instant.2HActs like the identity wire, but forces evaluation of the signal to NF.Depends: current instant.3+Convenience function to add another signal.Depends: current instant./0123/0123/0312/0123(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM4+Outputs the time delta to the last instant.Depends: time.5>Outputs the current local time passed since the first instant.Depends: time.6UOutputs the current local time passed since the first instant with the given offset.Depends: time.456456456456 (c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM 7Calculate the average of the signal over the given number of last samples. If you need an average over all samples ever produced, consider using 8 instead.-Complexity: O(n) space wrt number of samples.Depends: current instant.8tCalculate the average of the input signal over all samples. This is usually not what you want. In most cases the 7 wire is preferable.Depends: current instant.9Calculate the average number of instants per second for the last given number of instants. In a continuous game or simulation this corresponds to the average number of frames per second, hence the name..Complexity: O(n) space wrt number of samples.Depends: time.:Like 9, but sample in discrete intervals only. This can greatly enhance the performance, when you have an inefficient clock source..Complexity: O(n) space wrt number of samples.Depends: time.;Same as 7l, but with a sampling interval. This can be used to increase the performance, if the input is complicated.-Complexity: O(n) space wrt number of samples.Depends: current instant.<Collect 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.=0Outputs the first local time the input was seen.CComplexity: O(n) space, O(log n) time wrt number of samples so far.Depends: current instant, time.> High peak.Depends: current instant.?5Outputs the local time the input was previously seen.CComplexity: O(n) space, O(log n) time wrt number of samples so far.Depends: current instant, time.6Inhibits: if this is the first time the input is seen.@ Low peak.Depends: current instant.A>Output the peak with respect to the given comparison function.Depends: current instant. 789:Sampling interval.Number of samples.;Sampling interval.Number of samples.<=>?@A 789:;<=>?@A 7;89:>@A<=? 789:;<=>?@A (c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMBDifferential for objects.C$Specify velocity (units per second).DGTeleport to the given position instantly (velocity will be unchanged).EAccelerate (units per second).F7Object state. This includes the position and velocity.H Position.I Velocity.JDerivative. 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't want to handle exceptional cases specially, just pass (^/) as the handler function.Depends: current instant.KSame as J, but with respect to time.Depends: current instant.LXIntegral wire. Produces position from velocity in the sense of the given vector space.Depends: previous instant.MSame as L, but with respect to time.Depends: previous instant.N Variant of L, where you can specify a post-update function, which receives the previous position as well as the current (in that order). This is useful for limiting the output (think of robot arms that can't be moved freely).oDepends: current instant if the post-update function is strict in its first argument, previous instant if not.OSame as N, but with respect to time.Depends: previous instant.PObjects are generalized integrals. They are controlled through velocity and/or acceleration and can be collision-checked as well as instantly teleported.The post-move update function receives the world state and the current object state. It is applied just before the wire produces its output. You can use it to perform collision-checks or to limit the velocity.4Note that teleportation doesn't change the velocity.Depends: current instant.QSame as P, but with respect to time.Depends: current instant.BCDEFGHIJ5Handle exceptional change rates (receives dx and dt).Initial position.KHandle exceptional cases.Initial position.LMNPost-update function.Initial value.OPPost-move update function.Initial state.QPost-move update function.Initial state.BCDEFGHIJKLMNOPQLMNOJKPQFGHIBEDC BEDCFGHIJKLMNOPQ (c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMRyThe argument function turns the input signal into a context. For each context the given base wire evolves individually.BNote: Incorrect usage can lead to a memory leak. Consider using T instead.IComplexity: O(n) space, O(log n) time wrt to number of stored contexts.Depends: current instant.)Inhibits: when the context wire inhibits.SSame as R6, but keeps only the latest given number of contexts.TSame as Ru, but applies the given cleanup function to the context map at every instant. This can be used to drop older wires.UBroadcast the input signal to all of the given wires collecting their results. Each of the given subwires is evolved individually.)Depends: like the most dependent subwire.,Inhibits: when any of the subwires inhibits.R+Function to turn the signal into a context. Base wire.SSignal to context.Maximum number of latest wires. Base wire.T+Function to turn the signal into a context.dCleanup function. Receives the current instant number, the current local time and the current map. Base wire.URSTURSTURSTU (c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMVPerforms the argument wire with the input time delta. It is stepped often enough to catch up with the main wire. The individual results are combined as given by the fold (second and third argument).iComplexity: 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 .VTime delta for the subwire.Folding function.Fold base value.Subwire to step.VVV (c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMW The wire  ifW p x y acts like x, when the predicate p is true, otherwise y.3Complexity: like the predicate and the chosen wire.0Depends: like the predicate and the chosen wire.9Inhibits: when the predicate or the chosen wire inhibits.W Predicate.If true. If false.WWW(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMXInfix variant of Y.5This operator is right-associative with precedence 1.YoBehaves like the first wire until it inhibits. Switches to the second wire as soon as the first one inhibits.The Y1 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.ZIf the first argument wire produces a wire, switch to it immediately. If not, evolve the current wire. The second argument wire is the initial wire.7Depends: like event wire and the currently active wire.2Inhibits: when the currently active wire inhibits.Time: switching restarts time.[VWhenever the given wire inhibits, a new wire is constructed using the given function.$Depends: like currently active wire.Time: switching restarts time.XYWire to start with.Wire to switch into.ZProduces a wire to switch into. Initial wire.[Wire selection function. Initial wire.XYZ[YZ[XXYZ[XY(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM\@Maps the given function over the time deltas for the given wire.Complexity: like argument wire.Depends: like argument wire.Inhibits: like argument wire.\\\\(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM]Pure wires using _ as the inhibition monoid.^Monadic wires using _ as the inhibition monoid._'Monoid for the last occurred exception.`^ equivalent of b.a] equivalent of b.bwEvent wires are wires that act like identity wires, but may inhibit depending on whether a certain event has occurred.cPType-restricted identity wire. This is useful to specify the type of a signal.Depends: current instant.dtUtility to specify the input type of a wire. The argument is ignored. For types with defaulting you might prefer e. %inAs (Proxy :: Proxy Double) highPeakeUtility to specify the input type of a wire. The first argument is ignored. This is useful to make use of defaulting or when writing a dummy value is actually shorter. inLike (0 :: Double) highPeakfjType-restricted identity wire. This is useful to specify the type of a signal. The argument is ignored.Depends: current instant.guUtility to specify the output type of a wire. The argument is ignored. For types with defaulting you might prefer h. $outAs (Proxy :: Proxy Double) noiseMhUtility to specify the output type of a wire. The first argument is ignored. This is useful to make use of defaulting or when writing a dummy value is actually shorter. outLike (0 :: Double) noiseMi proxy for use with d or g.j proxy for use with d or g.k proxy for use with d or g.l proxy for use with d or g.m proxy for use with d or g.]^_`abcdefghijklm]^_`abcdefghijklm_b`a^]cdefghijklm]^_`abcdefghijklm(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMn#Branch according to the unterlying ; instance. Note that this wire branches at every instant.Depends: current instant.o Variant of q for the _ inhibition monoid.Depends: current instant..Inhibits: when the action throws an exception.p Variant of r for the _ inhibition monoid.:Depends: current instant, if the given function is strict..Inhibits: when the action throws an exception.q2Perform the input monadic action at every instant.Depends: current instant..Inhibits: when the action throws an exception.r2Perform the given monadic action at every instant.:Depends: current instant, if the given function is strict..Inhibits: when the action throws an exception.s+Perform the input monadic action in a wire.Depends: current instant.tQuits the current branch using .uNActs like identity in the first instant, then quits the current branch using .Depends: first instant.nopq,Turns an exception into an inhibition value.r,Turns an exception into an inhibition value.Action to perform.stunopqrstusopqrntunopqrstu(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM v@Try both wires combining their results with the given functions.Like argument wires."Inhibits: when both wires inhibit.wSemigroup version of v.xIIf the argument wire inhibits, inhibit with the given exception instead.Depends: like argument wire.Inhibits: like argument wire.yFPrevent a wire from inhibiting. Instead produce a signal wrapped in .0Note: You probably shouldn't use this function.Depends: like argument wire.zGPrevent a wire from inhibiting. Instead produce the inhibition value.0Note: You probably shouldn't use this function.Depends: like argument wire.{1Prevent a wire from inhibiting. Instead produce , if the wire inhibited.0Note: You probably shouldn't use this function.Depends: like argument wire.|VHold the latest event. Produces the last produced value starting with the given one.Depends: like argument wire.}tHold the event. Once the argument wire produces the produced value 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 wire produces, the produced value is kept for the given amount of 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 argument wire produces, the produced value is kept for the given 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.cAct like the identity wire, if the argument wire inhibits. Inhibit, if the argument wire produces.Depends: like argument wire.&Inhibits: when argument wire produces. v Only left. Only right.Both. First wire. Second wire.wxyz{|}~ vwxyz{|}~ vw|}~xyz{ vwxyz{|}~(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMRSTUVWXYZ[\vwxyz{|}~(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM 2A session value contains time-related information.>Construct a session using real time. This session type uses :. If you have a faster time source, you may want to use & instead and construct your own clock.\Construct a simple counter session. The time delta is the given argument at every instant.%Construct a frozen session. Same as  0.Construct a generic session from the given initial session value and the update function. You can use this function to implement your own clock.8If 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.eThis is a convenience function. You can also construct time deltas yourself entirely circumventing J. This can be useful, if there is really no need for an effectful monad.Like 3, but throws an exception instead of returning an  value.Like , but for pure wires.Like 3, 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.mRuns 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 this value, the less often the output is printed. Examples: 1000 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. (c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de> Safe-Inferred+2346=EHKM&Monads with a random number generator.Get a random number.'Get a random number in the given range.#Class for injectable values. See .(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM'Produce after the given amount of time..Depends: current instant when producing, time.4Inhibits: until the given amount of time has passed.+Produce after the given number of instants.(Depends: current instant when producing.8Inhibits: until the given number of instants has passed.UInhibit until the given predicate holds for the input signal. Then produce forever.^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.8Inhibits: when the predicate has not just switched from  to ._Produce once periodically. The production periods are given by the argument list. When it's [1,2,3] it produces after one second, then after two more seconds and finally after three more seconds. When the list is exhausted, it never produces again..Depends: current instant when producing, time.&Inhibits: between the given intervals. Variant of 2 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..Depends: current instant when producing, time.4Inhibits: after the given amount of time has passed.Same as .)Produce for the given number of instants.(Depends: current instant when producing.8Inhibits: after the given number of instants has passed.Inhibit with the given value.Inhibits: always.Inject the input signal. Please keep in mind that in application 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.1Depends: current instant after the first instant.Inhibits: in the first instant. Produce once..Depends: current instant in the first instant."Inhibits: after the first instant.7Produce once periodically with the given time interval..Depends: current instant when producing, time. Inhibits: between the intervals.MProduce once periodically with the given number of instants as the interval.(Depends: current instant when producing. Inhibits: between the intervals.Same as .CProduce when the given predicate on the input signal does not hold.4Depends: current instant if the predicate is strict.%Inhibits: When the predicate is true.SProduce until the given predicate on the input signal holds, then inhibit forever.5Depends: current instant, if the predicate is strict.8Inhibits: forever as soon as the predicate becomes true.;Produce when the given predicate on the input signal holds.4Depends: current instant if the predicate is strict.&Inhibits: When the predicate is false.SProduce while the given predicate on the input signal holds, then inhibit forever.5Depends: current instant, if the predicate is strict.9Inhibits: forever as soon as the predicate becomes false.(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMPure noise generator.Noise generator.Ranged noise generator.Depends: current instant.Pure ranged noise generator.Depends: current instant.3Event: Occurs randomly with the given probability. Inhibits: wackelkontaktM p inhibits with probability 1 - p.3Event: 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.(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKMV !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQnopqrstu(c) 2012 Ertugrul SoeylemezBSD3 Ertugrul Soeylemez <es@ertes.de>None+2346=EHKM      !"#$%&'()*+,-./0123456789:;<= !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~> ! !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ R S T U V W X Y Z [ \ ] ^ _ ` a a b c d e f g h i j k l m n o p qrstuvwxyz{|}~"'      !"#$%&'())*+,-./01233456789:;<=><=?<=?<=@<=A<=A<=B<=C<=C<=D<=E<=F<=G<=H<=I<JK<JL<JM<JNOPQOPROPSOPTOPUOPVOPWOPXOPYOPZOP[OP\OP]OP^OP_OP`OPab netwire-4.0.1 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 Exception Data.ProxyProxyTimedMapcleanupcutdeletefindWithDefaultemptyinsertlookupWireWPureWGenTimeconstantidentity mapOutputmkFixmkFixMmkGenmkPuremkStatemkStateMneverstepWire stepWirePaccumaccumT countFrom enumFromWiterateW iterateWTmconcatWunfoldunfoldTbagfifolifokeepsamplewindow windowListappenddelayforceforceNFprependdtimetimetimeFromavgavgAllavgFps avgFpsIntavgIntcollect firstSeenhighPeaklastSeenlowPeakpeakBy ObjectDiffVelocityPosition Accelerate ObjectState objPosition objVelocity derivative derivative_integral integral_ integralLim integralLim_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$fCategory*Wire$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.2Data.Time.ClockgetCurrentTimeEither GHC.Conc.IO threadDelay$fMonadRandomIO$fInjectableeEither$fInjectableeMaybeTrue Control.Arrowarrfirstapp|||loop<*> Alternative ApplicativeoptionalliftA3liftA2liftA<**><**>manysome<|>getConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListleftApp^<<<<^>>^^>>returnA&&&***secondArrow runKleisliKleisli zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoice ArrowApply ArrowMonad ArrowLoop Data.Functor<$>>>><<<.Category<$profunctors-3.3.0.1Data.Profunctor runUpStarUpStar runDownStarDownStar runForgetForgetsecond'first'Strongright'left'ChoiceData.Profunctor.Unsafermaplmapdimap Profunctor random-1.1 System.Random getStdRandom newStdGen getStdGen setStdGenmkStdGensplitgenRangenext RandomGenStdGenrandomIO randomRIOrandomsrandomRsrandomrandomRRandom