h$63      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ K L M N O P QRSTUVWXYZ[\]^_`abcdef g h i j k   Safe-Inferred3RattusUse 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>?lRattusComputes the variables that are bound by a given piece of syntax.mRattusCompute the dependencies of a bag of bindings, returning a list of the strongly-connected components.lnmo None 5BpRattus?RattusCheck all definitions in the given module. If Scope errors are found, the current execution is halted with .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. !"# !"#228None6)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..-Rattus Variant of   for stable types that can be safely used nested in recursive definitions or in another box.  !"#)*+,- +,)*-None".RattusStr a is a stream of values of type a.0Rattus+Get the first element (= head) of a stream.1RattusGet the tail of a stream, i.e. the remainder after removing the first element.2Rattus-Apply a function to each element of a stream.3Rattus>Construct a stream that has the same given value at each step.4Rattus Variant of 3 that allows any type a% as argument as long as it is boxed.5RattusConstruct 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) ::: ...6RattusSimilar to Haskell's . scan (box f) x (v1 ::: v2 ::: v3 ::: ... ) == (x `f` v1) ::: ((x `f` v1) `f` v2) ::: ... Note: Unlike , 6 starts with x f v1, not x.7Rattus7 is a composition of 2 and 6: "scanMap f g x === map g . scan f x8Rattus8 is similar to 7 but takes two input streams.9Rattus Similar to  on Haskell lists.:Rattus Similar to  on Haskell lists.;Rattus;Filter out elements from a stream according to a predicate.<RattusGiven 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 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. >RattusCalculates 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)../0123456789:;<=>20134<=678./9:5;>None& ?Rattus.A future may either be available now or later.BRattusApply a function to the value of the future (if it ever occurs).CRattus A future that will never happen.DRattus switch s e will behave like s until the future e is available with value s'", in which case it will behave as s'.ERattusTurn a stream of s into a stream of futures. Each such future behaves as if created by .FRattusLike D= 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'.GRattusSynchronise two futures. The resulting future occurs after both futures have occurred (coinciding with whichever future occurred last.HRattusTrigger 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.IRattus:Trigger a future as soon as the given function produces a  value. ?@ABCDEFGHI BCDFE?@AGHI None)JRattusEvents are simply streams of s.KRattusApply a function to the values of the event (every time it occurs).LRattusAn event that will never occur.MRattus switch s e will behave like s but switches to s'$ every time the event e occurs with some value s'@.NRattusLike M= 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'@.ORattusTrigger 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.PRattus:Trigger an event every time the given function produces a  value.JKLMNOPKLMNJOPNone,1<QRattus%Signal functions from inputs of type a to outputs of type b.RRattus#Run a signal function for one step.SRattus/The identity signal function that does nothing.TRattusCompose two signal functions.URattusCompute the integral of a signal. The first argument is the offset.VRattus 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@.WRattus rSwitch s behaves like s2, but every time the second input is of the form Just' s' it will change behaviour to s'.XRattusConstant signal function.YRattusThe output at time zero is the first argument, and from that point on it behaves like the signal function passed as second argument.ZRattusInsert 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).[RattusThe 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._Rattus9Loop 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.`Rattus$Precomposition with a pure function.aRattus%Postcomposition with a pure function.bRattus3fRattus*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.hRattus,Turn a stream function into a state machine.iRattusTurn a signal function into a state machine from inputs of type a/ and time (since last input) to output of type b.jRattus)Turns a lazy infinite list into a stream.kRattus)Turns a stream into a lazy infinite list.fghijkhikjfg     !"#$%&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSFTUVWXYZ [ F T U W Y Z\]^_PU`abcdefghijklmn o o p q r s t u v w xyz{yz|yz}yz~yzyzyzyz        F!Rattus-0.4-1D7OE1HggwiH6jeP12buTP Rattus.Yampa Rattus.PluginRattus.Primitives Rattus.Arrow Rattus.StrictRattus Rattus.Stream Rattus.Future Rattus.EventRattus.ToHaskellRattus.Plugin.AnnotationRattus.Plugin.DependencyRattus.Plugin.UtilsRattus.Plugin.StrictifyRattus.Plugin.StableSolverRattus.Plugin.ScopeCheck Control.ArrowArrowarrPreludezipWithzipbaseControl.Category>>> NotRattus AllowLazyDatapluginBoxOStabledelayadvboxunboxarrBoxfirstsecond***&&&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 userFunction strictifyExprcheckStrictDataSCxtsrcSpan isDelayApp isDelayVarisCase isTophandlertcStablecheckAll System.Exit exitFailureGHC.Basereturn GHC.MaybeMaybeGHC.Listscanl firstJust