h$8d4      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI J K L M N O P Q R S T U V W X Y Z [\]^_`abcdefghijklmnop q r s t u  Safe-Inferred3!Rattus.This annotation type is for internal use only.RattusUse 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  {-# ANN myFunction AllowLazyData #-} {-# ANN module AllowLazyData #-} None>?vRattusComputes the variables that are bound by a given piece of syntax.wRattusCompute the dependencies of a bag of bindings, returning a list of the strongly-connected components.vxwy None 5zRattus? RattusCheck all definitions in the given module. If Scope errors are found, the current execution is halted with .None None 3 RattusUse this to enable Rattus' plugin, either by supplying the option -fplugin=Rattus.Plugin directly to GHC. or by including the following pragma in each source file: &{-# OPTIONS -fplugin=Rattus.Plugin #-}NoneRattus,The "stable" type modality. A value of type Box a 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  N E t ::  --------------------  E delay t :: O Rattus0This is the eliminator for the "later" modality : ;  E t :: O  ---------------------  N ' E adv t :: Rattus2This is the constructor for the "stable" modality : 8 L E t ::  --------------------  E box t :: Box  c --------------------  E arr t :: a b c 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 #, 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. !"#$%&'()*+,-$%&')(* !"#+,-2 2&8Nonep3RattusApplicative operator for .4Rattus Variant of 3) where the argument is of a stable type..5RattusApplicative operator for .6Rattus Variant of 5) where the argument is of a stable type..7Rattus Variant of  for stable types that can be safely used nested in recursive definitions or in another box. !"#$%&'()*+,-34567 56347None#W8RattusStr a is a stream of values of type a.:Rattus+Get the first element (= head) of a stream.;RattusGet the tail of a stream, i.e. the remainder after removing the first element.<Rattus-Apply a function to each element of a stream.=Rattus>Construct a stream that has the same given value at each step.>Rattus Variant of = that allows any type a% as argument as long as it is boxed.?RattusConstruct 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) ::: ...@RattusSimilar to Haskell's . scan (box f) x (v1 ::: v2 ::: v3 ::: ... ) == (x `f` v1) ::: ((x `f` v1) `f` v2) ::: ... Note: Unlike , @ starts with x f v1, not x.ARattusA is a composition of < and @: "scanMap f g x === map g . scan f xBRattusB is similar to A but takes two input streams.CRattus Similar to  on Haskell lists.DRattus Similar to  on Haskell lists.ERattus;Filter out elements from a stream according to a predicate.FRattusGiven a value a and a stream as, this function produces a stream that behaves like GRattus Given a list  [a1, ..., an] of elements and a stream xs this function constructs a stream that starts with the elements  a1, ..., an, and then proceeds as xs. 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. HRattusCalculates an approximation of an integral of the stream of type Str a( (the y-axis), where the stream of type Str s provides the distance between measurements (i.e. the distance along the y axis).89:;<=>?@ABCDEFGH<:;=>FG@AB89CD?EH None' IRattus.A future may either be available now or later.LRattusApply a function to the value of the future (if it ever occurs).MRattus A future that will never happen.NRattus switch s e will behave like s until the future e is available with value s'", in which case it will behave as s'.ORattusTurn a stream of !s into a stream of futures. Each such future behaves as if created by .PRattusLike N= but works on stream functions instead of streams. That is, switchTrans s e will behave like s until the future e occurs with value s'#, in which case it will behave as s'.QRattusSynchronise two futures. The resulting future occurs after both futures have occurred (coinciding with whichever future occurred last.RRattusTrigger a future as soon as the given predicate turns true on the given stream. The value of the future is the same as that of the stream at that time.SRattus:Trigger a future as soon as the given function produces a " value. IJKLMNOPQRS LMNPOIJKQRS None++TRattusEvents are simply streams of !s.URattusApply a function to the values of the event (every time it occurs).VRattusAn event that will never occur.WRattus switch s e will behave like s but switches to s'$ every time the event e occurs with some value s'@.XRattusLike W= 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'@.YRattusTrigger 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.ZRattus:Trigger an event every time the given function produces a " value.TUVWXYZUVWXTYZNone,2v[Rattus%Signal functions from inputs of type a to outputs of type b.\Rattus#Run a signal function for one step.]Rattus/The identity signal function that does nothing.^RattusCompose two signal functions._RattusCompute the integral of a signal. The first argument is the offset.`Rattus 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@.aRattus rSwitch s behaves like s2, but every time the second input is of the form Just' s' it will change behaviour to s'.bRattusConstant signal function.cRattusThe output at time zero is the first argument, and from that point on it behaves like the signal function passed as second argument.dRattusInsert a sample in the output, and from that point on, behave like the given signal function.Note: The type of -:> is different from Yampa's: The second argument must be delayed (or boxed).eRattusThe input at time zero is the first argument, and from that point on it behaves like the signal function passed as second argument.fRattus9Apply a function to the first output value at time zero.gRattus8Apply a function to the first input value at time zero.hRattus'Override initial value of input signal.iRattus9Loop 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.jRattus$Precomposition with a pure function.kRattus%Postcomposition with a pure function.lRattus4pRattus*A state machine that takes inputs of type a and produces output of type b$. In addition to the output of type b the underlying function also returns the new state of the state machine.rRattus,Turn a stream function into a state machine.sRattusTurn a signal function into a state machine from inputs of type a/ and time (since last input) to output of type b.tRattus)Turns a lazy infinite list into a stream.uRattus)Turns a stream into a lazy infinite list.pqrstursutpq !"#$%&'()*+,-./01234566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ] ^ _ R ` a b c d e f g R ` a c e fhijk\almnopqrstuvwxyz { { | } ~                  R !Rattus-0.5-2vfvBjIzdLZ86nOeI4G3lH Rattus.YampaRattus.Plugin.Annotation Rattus.PluginRattus.Primitives Rattus.Arrow Rattus.StrictRattus Rattus.Stream Rattus.Future Rattus.EventRattus.ToHaskellRattus.Plugin.DependencyRattus.Plugin.UtilsRattus.Plugin.StrictifyRattus.Plugin.StableSolverRattus.Plugin.SingleTickRattus.Plugin.ScopeCheckRattus.Plugin.CheckSingleTick Control.ArrowArrowarrPreludezipWithzipbaseControl.Category>>> InternalAnn ExpectError ExpectWarning NotRattus AllowLazyData$fDataInternalAnn$fShowInternalAnn$fEqInternalAnn$fOrdInternalAnn $fDataRattus $fShowRattus $fEqRattuspluginBoxOStabledelayadvboxunboxarrBoxfirstsecond***&&&returnA:*Maybe'Just'Nothing'ListNil:!reverse' listToMaybe'+++ mapMaybe'maybe'fst'snd' $fFunctorList$fFoldableList$fShow:* $fFunctor:*$fVectorSpace:*a<#><##|#||##box'Str:::hdtlmapconstconstBoxunfoldscanscanMapscanMap2filtershift shiftManyintegralFutureNowWaitneverswitchwhenJust switchTransawaittrigger triggerMapEventSFstepSFidentitycomposerSwitchconstant-->-:>>---=>>=- initiallyloopPre^>>>>^<<^^<< $fArrowSF$fCategoryTYPESFTrans runTransducerrunSFtoStrfromStrHasBV dependencygetBV printBindsisStableghcErrUtilsSeverity SevOutputSevFatalSevInteractiveSevDumpSevInfo SevWarningSevErrorisType printMessage isRattModule isGhcModule getNameModule isTemporalisStrict userFunctionmkSysLocalFromVarmkSysLocalFromExprfromRealSrcSpannoLocationInfo strictifyExprcheckStrictDataSCxtsrcSpantcStable toSingleTickcheckAll System.Exit exitFailure CheckExpr recursiveSetoldExpr fatalErrorverbose checkExprGHC.Basereturn GHC.MaybeMaybeGHC.Listscanl firstJust