úÎwNO      !"#$%&'()*+,-./0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N  OPQRSTUVWXY    A computer program Z[;Create a stateful input-output-loop from a simple function &A program that terminates immediately *Terminate when a predicate on input fails Feed some outputs of a  to itself :A program that outputs a value and immediately terminates Delay the outputs of a  Given a partial function (a -> Maybe b)? and a start value, output its most recent result on an input. Given a partial function (a -> Maybe b)-, output its most recent result on an input.    !"#$%&'(\])*+, !"#$%&'()*+, )*+,$%&'(!"# !"#"#$%&'(%&'()*+,*+,-./-./-./-././ 01234567^_8 012345678 021354867 0211235445678 9:;<=>?@ABCDEFG`aH9:;<=>?@ABCDEFGH9=<;:>?@ACBHDEFG9=<;::;<=>?@?@ACBBCDEFGH IbJThe Peakachu equivalent to c. 5 Prints all output lines from the program, and feeds + input lines from the user to the program. IJIJIJ KKKK LVerbose version of M.  The program'0s outputs after each input are grouped together MdNLMNMLNLMNe !"#$%&'()*+,-./0112345567889 : ; < = > ? @ A B C D E F G H H I J K L M N O P Q R S T U V WXYZ[\]^_`^abcde f g h i jklm nopeakachu-0.3.0 Data.NewtypeData.ADT.Getters!FRP.Peakachu.Backend.GLUT.GettersControl.FilterCategoryControl.Concurrent.MVar.YCFRP.Peakachu.ProgramFRP.Peakachu.Backend.InternalFRP.Peakachu.BackendFRP.Peakachu.Backend.FileFRP.Peakachu.Backend.GLUTFRP.Peakachu.Backend.StdIOFRP.Peakachu.Backend.Time FRP.PeakachumkInNewtypeFuncsmkWithNewtypeFuncs mkADTGettersgChar gSpecialKey gMouseButtongDowngUpFilterCategoryflattenCarrCgenericFlattenC mapMaybeCfilterCmodifyMVarPure writeMVarProgramprogValsprogMore AppendProgram AppendProg runAppendProgscanlPemptyP takeWhileP loopbackP singleValuePdelayPwithAppendProgram1withAppendProgram2lstPslstP ParallelIOParIOrunParIOMainLoopmlInitmlQuitmlRunSink sinkConsume sinkMainLoopBackend runBackend FileToProgram FileErrorFileData ProgramToFile WriteFileReadFile gFileData gFileErrorfileB GlutToProgramKeyboardMouseEventMouseMotionEvent TimerEvent IdleEventImagerunImage ProgramToGlutSetTimer DrawImage gIdleEvent gTimerEventgMouseMotionEventgKeyboardMouseEventglutstdoutB interactBgetTimeB processListV processList runProgram NewtypeFuncWithIn nameAddSuftyVarBndrAddSuf predAddSuf tyVarBndrName typeAddSuf mkNewTypeFuncmkADTGetterFuncgLeftgRight inParallelIO1 inParallelIO2maybeIOstrictReadFile glutConsumesetGlutCallbackswhileMbase System.IOinteractdoWhile