śĪ#Ą{·ėn      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH I J K L M N O P Q R STUVWXYZ[\]^_`abcdefgh i j k l m  None4M ‘nRattus!The set of stable built-in types.oRattus<Check whether the given type is stable. This check may use Stable constraints from the context.pRattus<Check whether the given type is stable. This check may use Stable constraints from the context.qRattus<Check whether the given type is stable. This check may use Stable constraints from the context.rstuvwxyz{|}~o€ None  ‚ƒ„…†‡ˆ‰Š None ‹NoneP ŹŒNone2_RattusJUse this type to mark a Haskell function definition as a Rattus function: {-# ANN myFunction Rattus #-}>Or mark a whole module as consisting of Rattus functions only: {-# ANN module Rattus #-}”If you use the latter option, you can mark exceptions (i.e. functions that should be treated as ordinary Haskell function definitions) as follows:  {-# ANN myFunction NotRattus #-}ņBy default all Rattus functions are checked for use of lazy data types, since these may cause memory leaks. If any lazy data types are used, a warning is issued. These warnings can be disabled by annotating the module or the function with  F{-# ANN myFunction AllowLazyData #-} {-# ANN module AllowLazyData #-}RattusCUse this to enable Rattus' plugin, either by supplying the option -fplugin=Rattus.PluginL directly to GHC. or by including the following pragma in each source file: &{-# OPTIONS -fplugin=Rattus.Plugin #-}None0 Rattus,The "stable" type modality. A value of type Box aB is a time-independent computation that produces a value of type a. Use  and  to construct and consume  -types. Rattus+The "later" type modality. A value of type O a1 is a computation that produces a value of type a in the next time step. Use   and   to construct and consume  -types. Rattus A type is Stable0 if it is a strict type and the later modality O% and function types only occur under Box.%For example, these types are stable: Int,  Box (a -> b),  Box (O Int), Box (Str a -> Str b). But these types are not stable: [Int]) (because the list type is not strict),  Int -> Int!, (function type is not stable), O Int, Str Int. Rattus1This is the constructor for the "later" modality  : 9 “ ' "¢ t :: × -------------------- “ "¢ delay t :: O × Rattus0This is the eliminator for the "later" modality  : ; “ "¢ t :: O × --------------------- “ ' “' "¢ adv t :: ×Rattus2This is the constructor for the "stable" modality  : 8 “& "¢ t :: × -------------------- “ "¢ box t :: Box ×<where “& is obtained from “ by removing ' and any variables x :: ×, where × is not a stable type.Rattus2This is the eliminator for the "stable" modality  : 5 “ "¢ t :: Box × ------------------ “ "¢ unbox t :: ×   NoneB¶RattusVariant of the standard  type class with a different F method so that it can be implemented for signal functions in Rattus.Rattus?Lift a function to an arrow. It is here the definition of the Q class differs from the standard one. The function to be lifted has to be boxed.RattusoSend the first component of the input through the argument arrow, and copy the rest unchanged to the output.RattusA mirror image of .UThe default definition may be overridden with a more efficient version if desired.RattusySplit the input between the two argument arrows and combine their output. Note that this is in general not a functor.RattusKFanout: send the input to both argument arrows and combine their output.UThe default definition may be overridden with a more efficient version if desired.Rattus;This combinator is subject to the same restrictions as the  primitive of Rattus. That is, ; “& "¢ t :: b -> c -------------------- “ "¢ arr t :: a b c<where “& is obtained from “ by removing ' and any variables x :: ×, where × is not a stable type.Rattus,The identity arrow, which plays the role of Ž in arrow notation.Safe =?@AHUVO1 RattusStrict pair type.RattusStrict variant of .RattusStrict list type. RattusReverse a list.!RattusReturns  on an empty list or  a where a# is the first element of the list."RattusAppend two lists.#Rattus A version of ` which can throw out elements. In particular, the function argument returns something of type  b. If this is 8, no element is added on to the result list. If it is  b, then b is included in the result list.$Rattus)takes a default value, a function, and a  value. If the  value is h, the function returns the default value. Otherwise, it applies the function to the value inside the  and returns the result.%RattusFirst projection function.&RattusSecond projection function. !"#$%& "!#$%&228NoneS8,RattusApplicative operator for  .-Rattus Variant of ,) where the argument is of a stable type...RattusApplicative operator for  ./Rattus Variant of .) where the argument is of a stable type..  !"#$%&,-././,-NoneUVo0RattusStr a is a stream of values of type a.2Rattus+Get the first element (= head) of a stream.3RattusOGet the tail of a stream, i.e. the remainder after removing the first element.4Rattus-Apply a function to each element of a stream.5Rattus>Construct a stream that has the same given value at each step.6Rattus Variant of 5 that allows any type a% as argument as long as it is boxed.7RattusYConstruct a stream by repeatedly applying a function to a given start element. That is, unfold (box f) x will produce the stream x ::: f x ::: f (f x) ::: ...8RattusSimilar to Haskell's ‘. Xscan (box f) x (v1 ::: v2 ::: v3 ::: ... ) == (x `f` v1) ::: ((x `f` v1) `f` v2) ::: ... Note: Unlike ‘, 8 starts with x f v1, not x.9Rattus9 is a composition of 4 and 8: "scanMap f g x === map g . scan f x:Rattus: is similar to 9 but takes two input streams.;Rattus Similar to  on Haskell lists.<Rattus Similar to  on Haskell lists.=Rattus;Filter out elements from a stream according to a predicate.>RattusUGiven a value a and a stream as, this function produces a stream that behaves like ?Rattus Given a list  [a1, ..., an] of elements and a stream xsC this function constructs a stream that starts with the elements  a1, ..., an, and then proceeds as xsJ. In particular, this means that the ith element of the original stream xs< is the (i+n)th element of the new stream. In other words  shiftMany$ behaves like repeatedly applying shift for each element in the list. @RattusBCalculates an approximation of an integral of the stream of type Str a( (the y-axis), where the stream of type Str sR provides the distance between measurements (i.e. the distance along the y axis).0123456789:;<=>?@42356>?89:01;<7=@None{PARattusEvents are simply streams of s.BRattusCApply a function to the values of the event (every time it occurs).CRattusAn event that will never occur.DRattus switch s e will behave like s but switches to s'$ every time the event e occurs with some value s'@.ERattusLike D= but works on stream functions instead of streams. That is, switchTrans s e will behave like s but switches to s'$ every time the event e occurs with some value s'@.’RattusHelper function for E.FRattus›Trigger an event as every time the given predicate turns true on the given stream. The value of the event is the same as that of the stream at that time.GRattus:Trigger an event every time the given function produces a  value.ABCDEFGBCDEAFG NoneUVޱ HRattus'An event may either occur now or later.KRattus?Apply a function to the value of the event (if it ever occurs).LRattusAn event that will never occur.MRattus switch s e will behave like s until the event e occurs with value s'", in which case it will behave as s'.“RattusTurn a stream of Ss into an event. The event will occur whenever the stream has a value of the form Just' v , and the event then has value v.NRattusTurn a stream of Es into a stream of events. Each such event behaves as if created by “.ORattusLike M= but works on stream functions instead of streams. That is, switchTrans s e will behave like s until the event e occurs with value s'#, in which case it will behave as s'.”RattusHelper function for O.•RattusHelper function for P.–RattusHelper function for P.PRattus„Synchronise two events. The resulting event occurs after both events have occurred (coinciding with whichever event occurred last.QRattus˜Trigger an event as soon as the given predicate turns true on the given stream. The value of the event is the same as that of the stream at that time.RRattus:Trigger an event as soon as the given function produces a  value. HIJKLMNOPQR KLMONHIJPQRNone+UVÆSRattus%Signal functions from inputs of type a to outputs of type b.TRattus#Run a signal function for one step.URattus/The identity signal function that does nothing.VRattusCompose two signal functions.WRattusDCompute the integral of a signal. The first argument is the offset.XRattus switch s f behaves like s composed with arr fst until s produces a value of the form Just' c> in the second component. From then on it behaves like $f c@.YRattus rSwitch s behaves like s2, but every time the second input is of the form Just' s' it will change behaviour to s'.ZRattusConstant signal function.[Rattus†The output at time zero is the first argument, and from that point on it behaves like the signal function passed as second argument.\Rattus^Insert a sample in the output, and from that point on, behave like the given signal function.aNote: The type of -:> is different from Yampa's: The second argument must be delayed (or boxed).]Rattus„The input at time zero is the first argument, and from that point on it behaves like the signal function passed as second argument.^Rattus9Apply a function to the first output value at time zero._Rattus8Apply a function to the first input value at time zero.`Rattus'Override initial value of input signal.—Rattus9Lift a function to a signal function (applied pointwise).RNote: The type of is different from Yampa's: The function argument must be boxed.˜Rattus/Apply a signal function to the first component.™Rattus0Apply a signal function to the second component.šRattus'Apply two signal functions in parallel.›Rattus9Apply two signal functions in parallel on the same input.aRattus9Loop with an initial value for the signal being fed back.Note: The type of loopPre+ is different from Yampa's as we need the O type here.bRattus$Precomposition with a pure function.cRattus%Postcomposition with a pure function.dRattus<Precomposition with a pure function (right-to-left variant).eRattus=Postcomposition with a pure function (right-to-left variant).STUVWXYZ[\]^_`abcdeSUVXYZaT`W[\]^_bcde None=?HV··hRattus*A state machine that takes inputs of type a and produces output of type b$. In addition to the output of type bJ the underlying function also returns the new state of the state machine.jRattus,Turn a stream function into a state machine.kRattusATurn a signal function into a state machine from inputs of type a/ and time (since last input) to output of type b.lRattus)Turns a lazy infinite list into a stream.mRattus)Turns a stream into a lazy infinite list.hijklmjkmlhiœ !"#$%&'()*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQFRSTUV W X Y F R S Z T [ U V\]^_PS`abcdefghijklmn o o p q r s t u v wxyzxy{xy|xy}xy~xyxy€xy ‚ ƒ „ … † ‡ ˆ ‰ Š Š ‹ Œ  Ž   ‘ ’“”•–—˜•F™š› œ ›  žŸ ”¢£¤Rattus-0.2-inplace Rattus.Yampa Rattus.PluginRattus.Primitives Rattus.Arrow Rattus.StrictRattus Rattus.Stream Rattus.Events Rattus.EventRattus.ToHaskellRattus.Plugin.UtilsRattus.Plugin.StrictifyRattus.Plugin.StableSolverRattus.Plugin.ScopeCheck Control.ArrowArrowarrPreludezipWithzipbaseControl.Category>>> NotRattus AllowLazyDataplugin $fDataRattus $fShowRattus $fEqRattusBoxOStabledelayadvboxunboxarrBoxfirstsecond***&&&returnA:*Maybe'Just'Nothing'ListNil:!reverse' listToMaybe'+++ mapMaybe'maybe'fst'snd' $fFunctorList$fFoldableList$fShow:* $fFunctor:*$fVectorSpace:*a<*><**|*||**Str:::hdtlmapconstconstBoxunfoldscanscanMapscanMap2filtershift shiftManyintegralEventsneverswitch switchTranstrigger triggerMapEventNowWaitwhenJustawaitSFstepSFidentitycomposerSwitchconstant-->-:>>---=>>=- initiallyloopPre^>>>>^<<^^<< $fArrowSF$fCategoryTYPESFTrans runTransducerrunSFtoStrfromStrghcStableTypesisStable isStableRec isStrictRecghcErrUtilsSeverity SevOutputSevFatalSevInteractiveSevDumpSevInfo SevWarningSevErrorisType printMessage isRattModule isGhcModule getNameModule isTemporalisStrict userFunctionSCxtcheckStrictDatasrcSpan strictifyExpr isDelayApp isDelayVarisCase isTophandlertcStableemptyCtx checkExprGHC.Basereturn GHC.MaybeMaybeGHC.Listscanl switchTrans' firstJustawait1await2arrPrim firstPrim secondPrim parSplitPrim parFanOutPrim