Z      !"#$%&'()*+,-./0123456789:;<=>?@ABCD E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  1(c) 2013 Ertugrul Soeylemez (c) 2015 Rongcui DongBSD3 Rongcui Dong <karl_1702@188.com>Safe!"+-./3579FINUVYThis state delta type denotes time deltas. This is necessary for most FRP applications.State delta generators as required for wire sessions, most notably to generate time deltas. These are mini-wires with the sole purpose of generating these deltas.GState delta types with time deltas. You can extract fractionals using Extract the current time delta.,State delta generator for a real time clock.Non-extending version of . qState delta generator for a simple counting clock. Denotes a fixed framerate. This is likely more useful than & for simulations and real-time games. Non-extending version of  . Increment size.    @(c) Ertugrul Soeylemez, 2013 Rongcui Dong, 2015BSD3 Rongcui Dong <karl_1702@188.com>Safe!"+-./3579FINUV#Steps a signal in certain time stepLeft-strict version of  for functions.Left-strict version of  for functions.Left strict tuple Signal to be stepped Delta sessionInput | Stateful output    1(c) 2013 Ertugrul Soeylemez (c) 2015 Rongcui DongBSD3 Ertugrul Soeylemez <es@ertes.de>Safe!"+-./3579FINUVThis function runs the given signal network using the given state delta generator. It constantly shows the output of the wire on one line on stdout. Press Ctrl-C to abort.This command drives a black box of signal network. The driver knows nothing about the internals of the network, only stops when the network is inhibited.@(c) Ertugrul Soeylemez, 2013 Rongcui Dong, 2015BSD3 Rongcui Dong <karl_1702@188.com>Safe!"+-./3579FINUV8Make a pure stateful wire from given transition functionIMake a pure stateful wire from given time independant transition function.Make a pure stateless wire from given functionqMake a stateful wire from chained state transition function. Notice that the output will always be the new value#Make a signal that inhibits foreverThe Identity SignalMake a constant Signal:Make a pure stateful signal from given transition functionKMake a pure stateful signal from given time independant transition function0Make a pure stateless signal from given function?Make a stateful signal from given (Monadic) transition function PMake a stateful signal from given (Monadic) time independant transition function!+Make a stateless signal from given function"-Make a stateless signal from Kleisli function#,Make a stateful signal from Kleisli function$Make a monadic constant wire%.Make a monadic action wire, alias for mkConstM&This wire delays its input signal by the smallest possible (semantically infinitesimal) amount of time. You can use it when you want to use feedback (,): If the user of the feedback depends on nowj, delay the value before feeding it back. The argument value is the replacement signal at the beginning.Depends: before now. !"#$%& !"#$%& !"#$%& !"#$%&(c) 2015 Rongcui DongBSD3 Rongcui Dong <karl_1702@188.com>None!"+-./3579FINUV '}Takes a sample of second input when the first input becomes True. First snapshot taken at local time 0, i.e. on construction( Alias for '. Snapshot sounds more discrete)@Make an integration signal from a function that models the chage*A numerical integration signal.+<Acts as an identity signal for a certain time, then inhibits,Wait with a constant output-WA signal that outputs left side when input is True, and right side when input is False.MA signal that acts like identity but inhibits when input satisfies condition./MA signal that inhibits but acts like identity when input satisfies condition. '() Initial stateThe model, such as dX. s is delta session* Initial state The model+,-.Inhibit condition/Activate condition '()*+,-./ '()*+,-./ '()*+,-./-(c) 2015 Rongcui DongBSD3 Rongcui Dong <karl_1702@188.com>Safe!"+-./3579FINUV 0<Produces output for a several sample periods, then inhibits.Typical usage: 3() `occursFor` 1 >>> <some IO actions> >>> snapOnceSThe example above will perform the IO action once and then hold the result forever1HA value that appears for a semantically infinitely short period of time3WTakes the snapshot of the value when signal is activated, and then holds value foreverTypical usage: 3() `occursFor` 1 >>> <some IO actions> >>> snapOnceSThe example above will perform the IO action once and then hold the result forever4=Acts as identity for a several sample periods, then inhibits.5/Runs a signal once and hold the result forever.It is a combination of  inhibitsAfter and 365Rising edge filter. Creates an impulse at rising edge77Falling edge filter. Creates an impulse at falling edge8'Edge filter. Creates an impulse at edge9yA Set-Reset latch, with the first input set, second input reset. Current output value has higher priority (Prefer lazy!):_A set-latch whose initial value is False, but turns True and holds when its input becomes true;bA reset-latch whose initial value is True, but turns False and holds when its input becomes false 0Constant OutputNumber of sample periods123456 Initial value7 Initial value8 Initial value9 Initial value:; 0123456789:; 0123456789:; 0123456789:;(c) Rongcui Dong, 2015BSD3 Rongcui Dong <karl_1702@188.com>Safe!"+-./3579FINUV<Immediately switches to the second signal after the first one inhibits, and never switch back. Second signal is untouched until first signal inhibits=The flipped (-->)>Immediately switches to the second signal when it starts to produce output, and never switches back. First signal is untouched after second starts producing?The flipped (--<)<=>?<=>?<=>?<=>?<=>?(c) 2013 Ertugrul SoeylemezSafe!"+-./3579FINUV@Local time starting from zero.AKLocal time starting from zero, converted to your favorite fractional type.B)Local time starting from the given value.C0A signal for easy debugging in arrow environment@ABC@ABC@ABC@ABC (c) 2015 Rongcui DongBSD3 Rongcui Dong <karl_1702@188.com>None!"+-./3579FINUV/ !"#$%&'()*+,-./0123456789:;<=>?@ABC (c) 2013 Ertugrul SoeylemezNone!"+-./3579FINUV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABC None!"+-./3579FINUVDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab (c) 2015 Rongcui DongBSD3 Rongcui Dong <karl_1702@188.com>None!"+-./3579FINUVlInitializes consolemcDraw a filled ascii box with specified color and size. It will destroy SGR color state, be carefulnIDraw a character at a specific position. It will destroy SGR color stateoStatefully draw characterp.Clears a certain column range on a certain rowq2Gets character input from console without blockingcdefghijklmno The characterpRow Beginning ColEnd Col, non inclusiveqcdefghijklmnopqcdefghijklmnopqcdefghijklmnopq (c) Rongcui Dong, 2015BSD3 Rongcui Dong <karl_1702@188.com>None!"+-./3579FINUVPosition Whether player is firing bulletsEnemy PositionDirection vector Speed, affecting update interval Is it alive?Draws a vivid white ^. on the bottom line, and deals with flickeringUpdates an X coordinate*The stateful signal of player X coordinateConvert a keypress to Modeling the change of positionMain signal to update an enemyJust a wrapper around  Interface z to logic signal,The logic signal to handle fire and cooldownThe signal to update playerConverts a raw input to a z$The signal of position in a boundaryTesting The signal to update an enemy6rstuvwxyz{|}~Delta session/timeVelocity vectordelta PositionInitial positionVelocity vector Boundary size Bound size3rstuvwxyz{|}~3z{|}~uvwxyrstrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o o p q r s t u v P w x y z { | } ~                   S       !""#$%&'()**+,-./01234456789:;<=>>?@ABCDEFGHIJKLMNKOKPQRQSTUVWXYZ[\]^_`abcdefghijikilimnonpnqnrnstuvwxyz{|}~             timel_GB4h1WMErVzHBqW9d7oaepFRP.Timeless.SessionFRP.Timeless.SignalFRP.Timeless.RunFRP.Timeless.Prefab.PrimitiveFRP.Timeless.Prefab.ProcessingFRP.Timeless.Prefab.DiscreteFRP.Timeless.Prefab.SwitchFRP.Timeless.Prefab.UtilsFRP.Timeless.TutorialFRP.Timeless.Framework.ConsoleFRP.Timeless.Tutorial2FRP.Timeless.Prefab FRP.TimelessTimedSession stepSessionHasTimedtime clockSession clockSession_ countSession countSession_SignalSIdSConstSArrSPureSGen stepSignallstrict testSignalrunBoxmkPWmkPWNmkPW_mkSW_mkEmptymkIdmkConstmkPuremkPureNmkPure_mkGenmkGenNmkGen_ mkKleisli_mkSK_mkConstMmkActMdelaysamplesnapshot integrateM integratewaitwaitWith<=>unless'when' occursForimpulseoneShotsnapOnceinhibitsAfterPeriods runAndHoldrisingfallingedgelatchlatchSlatchR--><----<>--timetimeFtimeFromsDebug initConsolerunEcho inputBlockingsInputoutputsOutputsEchoBoxrunEcho2inputNonBlocking outputMaysInput'sOutput' sEchoBox2 runGetName updateNamesNamesReversesLineOutsNameBoxrunHellohellosHello sHelloBox runGreetings sIsReturnsName2 sGreeting sGreetingsBox runTutorialsQuit sTutorialBox InitConfig initInHandle initOutHandleinitEchoinitInBufferinginitOutBufferinginitShowCursordefaultInitConfigasciiBoxdrawChar drawCharSclearLineRangesInputNonBlocking BulletEventBDestroyBNoeventBullet bulletPos bulletVelbulletIsDestroyed PlayerEventPMoveLPMoveRPFirePNoeventPlayer playerPos playerFiringEnemyePoseDireSpeedeAlive EnemyEventEKillENoeventMoveMLeftMRightMStay drawPlayertestIO updatePosXsPlayerXtoMove testPlayerdPos sUpdateEnemy0 testEnemy0 updatePosX'sToFiresFire sUpdatePlayer toPlayerEvent testPlayer2 sUpdateBulletsUpdateBoundedPositiontestUBP sUpdateEnemy testEnemybaseGHC.Real realToFrac $fMonoidTimed$fHasTimetTimed$fApplicativeSession&&&! Control.Arrow&&&***!***$fApplicativeSignal$fFunctorSignal$fArrowLoopSignal$fArrowChoiceSignal $fArrowSignal$fCategory*Signal ArrowLoopGHC.Base++GHC.Errerrorghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$ undefinedGHC.Num fromInteger- fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negatefail>>=>>fmapreturnarrfirstapp|||loop fromIntegral toInteger toRational<*>pureBoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShow Applicative Data.FoldableFoldableData.Traversable Traversable GHC.TypesBoolCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerOrderingRationalIOWord Data.EitherEitherStringFalseTrueLeftRightLTEQGTeithersequencemapM sequenceAtraverseControl.ApplicativeoptionalgetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListleftApp^<<<<^>>^^>>returnAsecondArrow runKleisliKleisli zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoice ArrowApply ArrowMonadreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.ExceptionioErrorGHC.IOFilePath userErrorIOError Text.ReadreadreadsnotElemallanyorand concatMapconcat sequence_mapM_productsumminimummaximumelemlengthnullfoldl1foldr1foldlfoldrfoldMap Data.OldListunwordswordsunlineslinesControl.Category>>><<<.idCategorylex readParenreadList readsPrecatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixText.ParserCombinators.ReadPReadSlcmgcd^^^oddevendivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsucc Data.Functor<$> showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.Maybemaybeuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flipconst=<<liftA3liftA2liftA<**>JustNothingMaybemconcatmappendmemptyMonoid<$<**>manysome<|>empty Alternative/=compare<=&&||not<>maxmintime_AXTdBF9VRQoBOqJT6qtmVHData.Time.ClockgetCurrentTimeData.Time.Clock.UTCDiff diffUTCTime addUTCTimeData.Time.Clock.UTC utctDayTimeutctDayUTCTimeNominalDiffTimeData.Time.Clock.ScalepicosecondsToDiffTimesecondsToDiffTimegetModJulianDate ModJulianDate UniversalTimeDiffTime $fShowBullet $fShowPlayer $fShowEnemy