Yn      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmportablestablehans@hanshoglund.se Safe-Inferredn Synonym for o p Synonym for q r Synonym for 'fmap Char.toUpper' s Synonym for 'fmap Char.toLower' tMConvert a string to use upper case for the leading letter and lower case for  remaining letters. u Synonym for '(++)' v Synonym for ' flip (++)' w&Separate a list by the given element. Equivalent to x y3Initiate and separate a list by the given element. z4Separate and terminate a list by the given element. {4Separate and terminate a list by the given element. |Combination of } and w. ~Combination of } and y. Combination of } and z. Combination of } and {. .Divide a list into parts of maximum length n. WBreak up a list into parts of maximum length n, inserting the given list as separator. ' Useful for breaking up strings, as in  breakList 80 n str.  A version of  generalized to arbitrary  instances.  A version of  generalized to arbitrary  instances.  A version of  generalized to arbitrary  instances. nprstuvwyz{|~nprstuvwyz{|~nprstuvwyz{|~NoneNone     NoneRStop and reset position. +Stop playing, and retain current position. +Play in reverse from the current position.  Play from the current position. A time-varying value.  type Reactive a = Time -> a A stream of values.  type Event a = [(Time, a)] The empty event. Interleave values. &Interleave values of different types. )Run both and behave as the second event. Map over values (synonym for f <$> xs). Filter values, semantically  filter p xs. Retain values, semantically  retain p xs. Separate chunks of values. & scatterE [e1,e2..] = [e1] <> [e2] .. Discard empty values. Partition values, semantically partition p xs. 1 let (x, y) = partitionE p e in mergeE x y "a e .Partition values of different types. See also . , let (x, y) in eitherE x y = splitE e "a e Replace values, semantically x <$ e.  Throw away values of the event. This is of course just () <$ x1 but it is useful to fix the type in some cases. 2Discard values, using an arbitrary empty element. !Event accumulator. * a `accumE` e = (a `accumR` e) `sample` e + a `accumR` e = a `stepper` (a `accumE` e) "Create a past-dependent event. & scanlE f z x = foldpE (flip f) f z x #>Create a past-dependent event. This combinator corresponds to  on streams. & scanlE f z x = foldpE (flip f) f z x $&Create a past-dependent event using a  instance. )Get just the first value. *Get all but the first value. +Count values. ,Delay by one value. - Delay by n values. . Buffer up to nD values. When the buffer is full, old elements will be rotated out. 5 bufferE n e = [[e1],[e1,e2]..[e1..en],[e2..en+1]..] /1Gather event values into chunks of regular size. ( gatherE n e = [[e1..en],[en+1..e2n]..] Pack with last value. 0!Pack with last value. Similar to  withPrevEWith in reactive but flipped. A non-reactive reactive. 1Step between values. 2$Switch between time-varying values. ;switcher :: Reactive a -> Event (Reactive a) -> Reactive a  r switcher e = RJoin (r 1 e)  r switcher e = join (r 1 e) %Step between values without initial. 4Switch between time-varying values without initial. :maybeSwitcher :: Event (Reactive a) -> Reactive (Maybe a)  maybeSwitcher e = pure Nothing switcher fmap (fmap Just) e OStep between values without initial, failing if sampled before the first step. 3HSwitch between the values of a time-varying value when an event occurs. 5sampleAndHold :: Reactive b -> Event a -> Reactive b  sampleAndHold r e = r switcher (pure  $ r 5 e) C sampleAndHold r e = (liftA2 change) r (maybeStepper $ sample r e)  where  change a Nothing = a  change a (Just b) = b 49Apply the values of an event to a time-varying function. & r `apply` e = r `snapshotWith ($)` e 5Sample a time-varying value. % r `snapshot` e = snapshotWith const 6;Sample a time-varying value with the value of the trigger. # r `snapshot` e = snapshotWith (,) 7LSample a time-varying value with the value of the trigger, using the given  function to combine. , r `snapshotWith f` e = (f <$> r) `apply` e 83Filter an event based on a time-varying predicate. 3 r `filter'` e = justE $ (partial <$> r) `apply` e 90Filter an event based on a time-varying toggle. ( r `gate` e = (const <$> r) `filter'` e :Efficient combination of ! and ;. Combine reactives. See also . ;Reactive accumulator. * a `accumE` e = (a `accumR` e) `sample` e + a `accumR` e = a `stepper` (a `accumE` e) <ACreate a past-dependent reactive. This combinator corresponds to  on streams. & scanlR f z x = foldpR (flip f) f z x =ACreate a past-dependent reactive. This combinator corresponds to  on streams. & scanlR f z x = foldpR (flip f) f z x >&Create a past-dependent event using a  instance. CCount values. G!Difference of successive values. HA generalized time behaviour. IIntegrates a behaviour.  integral pulse behavior J@Generates a cursor that moves forward or backward continuously. 7The cursor may be started, stopped, moved by sending a  event.  transport control pulse speed KRecord a list of values. LPlay back a list of values. =This function will sample the time behaviour at an arbitrary @ small interval. To get precise control of how time is sampled,  use M instead. MPlay back a list of values. N#Event reading from external world. J The computation should be blocking and is polled exactly once per value. )This function can be used with standard I/ O functions. O#Event reading from external world. U The computation should be non-blocking and may be polled repeatedly for each value. "This function should be used with  non-effectful% functions, typically functions that 6 observe the current value of some external property.  You should not" use this function with standard I/O functions as this : may lead to non-deterministic reads (i.e. loss of data). P%Event writing to the external world. )This function can be used with standard I/ O functions. QEvent reading from a channel. REvent writing to a channel. SEvent version of . TEvent version of . UEvent version of . VEvent version of . Z . An event occuring at the specified interval. [Run the given event once. \Run the given event for ever. ]$Run the given event until the first Just x value, then return x. ^KBehaves like the original event but writes a given message to the standard  output for each value. _MBehaves like the original event but writes its value, prepended by the given  message, for each value. `8Creates a new source and a computation that writes it. a9Creates a new sink and a computation that reads from it.  Pass through Just occurrences. Pass through values satisfying p. $Reactive is an applicative functor:  is a constant value and fr <*> xr applies the  function fr t to the value xr t. Reactive is a functor: - transforms the value at each point in time. #Reactive has a lifted is a monoid: ! is the constant empty value and & mappend combines values according to  on values. Event is a monoid: ! is the event that never occurs,  interleaves values. Event is a functor:  transforms each value.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdT !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdT123489567,-0G./!;"<#=:)*+C$>%&'(?@AB DEFZHIJKLMSTUVWXYQRNOP[\]`a^_bcd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdNone efghijklm\      !"#$%&'()*+,-./efghijklm feghijklm efghijklm0       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxuvyz{|}~uuuuuuuuuuuuuuu       !"#$%&'()*+,-./0123456789:;<=>? reenact-0.9Control.Reactive.MidiControl.Reactive.VarControl.Reactive.ChanControl.ReactiveControl.Reactive.Util hamid-0.10 System.MidiMidiTime MidiMessageVargetVarnewVardupVarreadVarwriteVarChangetChannewChandupChan writeChanreadChan tryReadChanSinkSourceTransportControlStopPauseReversePlayReactiveEventeitherEseqEoftenEscatterEjustEsplitEtickEaccumEfoldpEscanlEmonoidEsumEproductEallEanyEfirstErestEcountElastEdelayEbufferEgatherE recallEWithstepper maybeSteppersampleAndHold2applysamplesnapshot snapshotWithfilter'gatemapAccumaccumRfoldpRscanlRmonoidRsumRproductRallRanyRcountRonRoffRtoggleRdiffEtimeintegral transportrecordplayback playback'getEpollEputE readChanE writeChanEgetCharEputCharEgetLineEputLineE systemTimeRsystemTimeSecondsRsystemTimeDayRpulserunrunLoop runLoopUntilnotifyshowing newSourcenewSinkrunEvent runReactiveunsafeGetReactiveMidiDestination MidiSource midiSourcesmidiDestinations findSourcefindDestinationmidiInmidiIn'midiOut toUpperCharbase GHC.UnicodetoUpper toLowerChartoLower toUpperString toLowerStringtoCapitalStringprefixsuffixsep Data.List intersperseprepostwrap concatSep Data.Foldableconcat concatPre concatPost concatWrap divideList breakList concatMapN concatMap Data.MonoidMonoid concatMapM Control.Monad MonadPlus concatMapAControl.Applicative Alternative isSubstringOfisInfixOfNormalizedisSubstringOfNormalized concatLines mapIndexedtaunevermergeEmapEfilterEretainE partitionEreplaceEtickMEGHC.ListscanlrecallEalwaysReventToReactivezipR System.IOgetCharputChargetLineputStrLn joinMaybesfilterMP$fApplicativeReactivepure$fFunctorReactiveGHC.Basefmap$fMonoidReactivememptymappend $fMonoidEvent$fFunctorEventRApplyRAccumRStepRConstESampESinkESourceEChanEConcatEPredEMapESeqEMergeENeverprepEprepRprepCprepVrunErunRSrunRunzipEunzipR liftMonoidE liftMonoidRisStoppartiallist filterMapcycleMsinglefromLeft fromRightnoFun noOverloadingkStdPulseInterval kLoopInterval kStdPulse<$$>$fVectorSpaceReactive$fAdditiveGroupReactive$fFloatingReactive$fFractionalReactive$fIntegralReactive$fRealReactive $fNumReactive$fEnumReactive $fOrdReactive $fEqReactive$fIsStringReactive HCodecs-0.2.2 Codec.Midi buildMessage parseMessage buildTrack parseTrack buildMidi parseMidi exportFile importFile fromRealTime toRealTime fromAbsTime toAbsTimemerge toSingleTrackremoveTrackEnds isTrackEnd isMetaMessageisSysexMessageisChannelMessage isPitchWheelisChannelPressureisProgramChangeisControlChange isKeyPressureisNoteOn isNoteOfftrackstimeDivfileTypeMidi SingleTrack MultiTrack MultiPatternFileType TicksPerBeatTicksPerSecondTimeDivTicksChannelKeyVelocityPressurePresetBank PitchWheelTempovelocitykeychannelNoteOffNoteOnpressure KeyPressurecontrollerValuecontrollerNumber ControlChangepreset ProgramChangeChannelPressure pitchWheelSequenceNumberText Copyright TrackNameInstrumentNameLyricsMarkerCuePoint ChannelPrefix ProgramName DeviceNameTrackEnd TempoChange SMPTEOffset TimeSignature KeySignatureReservedSysexMessage