Îõ³h*rÏnn¼      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ²³´µ¶·¸¹º»0.14.9Ç(c) Ivan Perez, 2014-2023 (c) George Giorgidze, 2007-2012 (c) Henrik Nilsson, 2005-2006 (c) Antony Courtney and Henrik Nilsson, Yale University, 2003-2004BSD3ivan.perez@keera.co.uk provisionalportable Safe-InferredTI bearriverDuplicate an input.J bearriver%Lift a binary function onto an arrow.K bearriver$Lift a 3-ary function onto an arrow.L bearriver$Lift a 4-ary function onto an arrow.M bearriver$Lift a 5-ary function onto an arrow.IJKLMIJKLMÇ(c) Ivan Perez, 2014-2022 (c) George Giorgidze, 2007-2012 (c) Henrik Nilsson, 2005-2006 (c) Antony Courtney and Henrik Nilsson, Yale University, 2003-2004BSD3ivan.perez@keera.co.uk provisionalportable Safe-Inferred»N bearriver“A single possible event occurrence, that is, a value that may or may not occur. Events are used to represent values that are not produced continuously, such as mouse clicks (only produced when the mouse is clicked, as opposed to mouse positions, which are always defined).Q bearriver“Make the NoEvent constructor available. Useful e.g. for initialization, ((-->) & friends), and it's easily available anyway (e.g. mergeEvents []).R bearriver4Suppress any event in the first component of a pair.S bearriver5Suppress any event in the second component of a pair.T bearriver-An event-based version of the maybe function.U bearriver)Y bearriverÍTags an (occurring) event with a value ("replacing" the old value). Same as X with the arguments swapped.,Applicative-based definition: tagWith = (<$)Z bearriver;Attaches an extra value to the value of an occurring event.[ bearriver?Left-biased event merge (always prefer left event, if present).\ bearriverÁRight-biased event merge (always prefer right event, if present).] bearriver:Unbiased event merge: simultaneous occurrence is an error.^ bearriver t (Event a) -> Event a mergeEvents = asuma bearriver9Collect simultaneous event occurrences; no event if none.b bearriverÏJoin (conjunction) of two events. Only produces an event if both events exist.1Applicative-based definition: joinE = liftA2 (,)c bearriver+Split event carrying pairs into two events.d bearriver4Filter out events that don't satisfy some predicate.e bearriver2Combined event mapping and filtering. Note: since N is a ½, see ¾: for a simpler version of this function with no filtering.f bearriverÀEnable/disable event occurrences based on an external condition.g bearriver$Convert a maybe value into a event (N is isomorphic to ¿).h bearriverNFData instance.i bearriverAlternative instance.j bearriverMonadFail instancek bearriverMonad instance.l bearriver!Applicative instance (similar to ¿).m bearriver$Functor instance (could be derived)._ bearriver2Mapping function used when first event is present. bearriver3Mapping function used when second event is present. bearriver3Mapping function used when both events are present. bearriver First event bearriver Second eventNOPQRSTUVWXYZ[\]^_`abcdefgNOPQRSTUVWXYZ[\]^_`abcdefgX8Z8[6\6]6b7f8Ç(c) Ivan Perez, 2014-2022 (c) George Giorgidze, 2007-2012 (c) Henrik Nilsson, 2005-2006 (c) Antony Courtney and Henrik Nilsson, Yale University, 2003-20044BSD-style (see the LICENSE file in the distribution)ivan.perez@keera.co.uk provisionalnon-portable (GHC extensions) Safe-InferredRq bearriver$Information on the progress of time.À bearriverìExtensible signal function (signal function with a notion of time, but which can be extended with actions).ÆSignal function that transforms a signal carrying values of some type a- into a signal carrying values of some type bÝ. You can think of it as (Signal a -> Signal b). A signal is, conceptually, a function from s to value.r bearriver¢DTime is the time type for lengths of sample intervals. Conceptually, DTime = R+ = { x in R | x > 0 }. Don't assume Time and DTime have the same representation.s bearriveræTime is used both for time intervals (duration), and time w.r.t. some agreed reference point in time.  srÀqÔ(c) Ivan Perez, 2019-2023 (c) Ivan Perez and Manuel Baerenz, 2016-2018BSD3ivan.perez@keera.co.uk Safe-Inferredòt bearriver%Integration using the rectangle rule.Á bearriver¡Integrate using an auxiliary function that takes the current and the last input, the time between those samples, and the last output, and returns a new output.u bearriverûA very crude version of a derivative. It simply divides the value difference by the time difference. Use at your own risk. bearriverûA very crude version of a derivative. It simply divides the value difference by the time difference. Use at your own risk.¥’“JKLMwxyz{}~®¯Ÿ¨ƒ„€QRSTUVWXYZ[\^_`abcdefg—˜™›œž ¡¢£¤¦§©ª«¬­Ž‡ˆ‰ŠŒ‘tuv”•–°²³´µ¶·¸¹Ô(c) Ivan Perez, 2019-2022 (c) Ivan Perez and Manuel Baerenz, 2016-2018BSD3ivan.perez@keera.co.uk Safe-Inferredl’º bearriverâFuture signal function (conceptually, a function between future signals that respects causality).ÄA future signal is a signal that is only defined for positive times.» bearriverÔSignal function (conceptually, a function between signals that respects causality).±NOP    ,-?@ABCDEFGHsrq±2|‹4I<;]!"#¶$%&'()*+./0‚1356789:š=>¥’“²JKLMwxyz{}~®¯Ÿ¨ƒ„€QRSTUVWXYZ[\^_`abcdefg—˜™›œž ¡¢£¤¦§©ª«¬­Ž‡ˆ‰ŠŒ‘tuv´”•–°³µ·¸¹»º±NOP    ,-?@ABCDEFGHsrq±2|‹4I<;]!"#¶$%&'()*+./0‚1356789:š=>¥’“²JKLMwxyz{}~®¯Ÿ¨ƒ„€QRSTUVWXYZ[\^_`abcdefg—˜™›œž ¡¢£¤¦§©ª«¬­Ž‡ˆ‰ŠŒ‘tuv´”•–°³µ·¸¹»ºÊ !"#$%&&'()*+,-./0123423523623728928:28;28<28=28>28?28@2AB2AC2AD2AE2AF2AG2AH2AI2AJ2AK2AL2AM2AN2AO2AP2AQ2AR2AS2ATUVWUVXUVYUVZUV[UV\UV]UV^UV_UV`abcdeffghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç ÈÉÊœËÌÍÎÏÐÑÒÓÒÔÒÕÖ×ÑØÙÖÚÖÛ ÜÝÞßÝÞà áÝÞâã'bearriver-0.14.9-CPRPryo3v186WyRdiQdhAF FRP.YampaFRP.BearRiver.ArrowFRP.BearRiver.EventFRP.BearRiver.IntegrationFRP.BearRiver.BasicFRP.BearRiver.ScanFRP.BearRiver.DelaysFRP.BearRiver.LoopFRP.BearRiver.HybridFRP.BearRiver.SwitchesFRP.BearRiver.EventSFRP.BearRiver.ConditionalFRP.BearRiver.Time FRP.BearRiver bearriverFRP.BearRiver.InternalCorebase Control.Arrowarrfirstapp|||loopControl.Category<<<>>> ArrowLoop ArrowMonad ArrowApply ArrowChoiceleftright+++ ArrowPlus<+> ArrowZero zeroArrowKleisli runKleisliArrowsecond***&&&returnA^>>>>^<<^^<<leftApp#dunai-0.13.0-3EWOy1RZYoG3uVzQhHqBgy'Data.MonadicStreamFunction.InternalCoreMSFmorphGSfeedbackembedData.MonadicStreamFunction.CoreconstMarrM liftBaseM liftBaseS^>>>>>>^ liftTransSmorphSData.MonadicStreamFunction.UtilMSinkMStream mapMaybeSwithSideEffectwithSideEffect_iPostnextfifocountsumSsumFrommappendS mappendFromaccumulateWithmealyunfold traceWith traceWhenpauseOn0simple-affine-space-0.2.1-74ucbS7fm4g3wPtIMzWIo8Data.VectorSpace VectorSpace zeroVector*^^/^+^^-^ negateVectordotnorm normalizeduparr2arr3arr4arr5EventNoEventnoEvent noEventFst noEventSndevent fromEventisEvent isNoEventtagtagWithattachlMergerMergemergemergeBymapMerge mergeEvents catEventsjoinEsplitEfilterE mapFilterEgate maybeToEvent $fNFDataEvent$fAlternativeEvent$fMonadFailEvent $fMonadEvent$fApplicativeEvent$fFunctorEvent $fEqEvent $fOrdEvent $fShowEvent ClockInfoDTimeTimeintegral derivativeiterFromidentityconstant-->-:>>---=>>=- initiallysscan sscanPrimpreiPrefbydelayloopPre loopIntegralholddHold trackAndHold dTrackAndHoldaccum accumHold dAccumHoldaccumBy accumHoldBy dAccumHoldBy accumFilterswitchdSwitchparB dpSwitchBparCnevernowafter repeatedly afterEach afterEachCat delayEvent delayEventCatedgeiEdgeedgeTagedgeJustedgeBynotYetonce takeEvents dropEventssnap snapAftersample sampleWindowrecurandThenprovidedpause localTimetime eventToMaybe boolToEvent occasionally reactimate evalAtZeroevalAt evalFutureFutureSFSFGHC.BaseidFunctorfmap GHC.MaybeMaybe integralFromderivativeFromJustNothing mapEventSghc-prim GHC.TypesTrueFalseedgeFromBool