ob      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a None 9;<=?AITbbbNone 9;<=?AITqcdefghijklmnopqrstuvwxyz{|}~Qfghijkuvxyz{|}~`cdefghijk lmnopqrstuvwxyz{|}~665555None 9;<=?AIT-,!None 9;<=?AIT%This record type contains all the functions that Shellac allows the pluggable backend to provide. Most of these operations are optional and relate to advanced features like command completion and history. However, a shell backend is required to provide sensible implementations for , , , , and  .Provides the backend a way to perform any necessary initialization before the shell starts. This function is called once for each shell instance. The generated value will be passed back in to each call of the other methods in this record.]Called when the shell exits to allow the backend to perform any necessary cleanup actions.>Causes the string to be sent to the underlying console device.Perform any operations necessary to clear any output buffers. After this operation, the user should be able to view any output sent to this backend.NRetrieve a single character from the user without waiting for carriage return.<Print the prompt and retrieve a line of input from the user.!Add a string to the history list. nSet the characters which define word boundaries. This is mostly used for defining where completions occur. -Get the current set of word break characters. XA callback to run whenever evaluation or a command is canceled by the keyboard signal *A completion function that is tried first. An alternate function to generate completions. The function given takes the word as an argument and generates all possible completions. This function is called (if set) after the attemptedCompletionFunction if it returns 'Nothing'.0A backend-provided method to complete filenames.0A backend-provided method to complete usernames.)An operation to clear the history buffer.ASets the maximum number of entries managed by the history buffer.AGets the maximum number of entries managed by the history buffer.Read the history buffer from a file. The file should be formatted as plain-text, with each line in the file representing a single command entered, most recent commands at the bottom. (This format is what readline produces)oWrite the history buffer to a file. The file should be formatted in the same way as in the description for .A datatype representing ouput to be printed. The different categories of output are distinguished to that shell backends can, for example, apply different colors or send output to different places (stderr versus stdout).&The most regular way to produce output2An informative output string, such as command helpAn string generated by an errorThe type of completion functions. The argument is a triple consisting of (before,word,after), where 'word' is a string of non-word-break characters which contains the cursor position. 'before' is all characters on the line before 'word' and 'after' is all characters on the line after word. The return value should be 'Nothing' if no completions can be generated, or 'Just (newWord,completions)' if completions can be generated. 'newWord' is a new string to replace 'word' on the command line and 'completions' is a list of all possible completions of 'word'. To achieve the standard "complete-as-far-as-possible" behavior, 'newWord' should be the longest common prefix of all words in 'completions'.Provides a sane default set of characters to use when breaking lines into 'words'. If a backend does not have configurable word break characters, then getWordBreakCharacters% can just return this default set._This backend template is useful for defining custom backends. The idea is that you will use  to generate a bare-bones backend implemenation and only fill in the methods that you wish to define using the record update syntax. The parameter to q becomes the backend state associated with the backend and is passed into to each of the operation methods.    None 9;<=?AITNone 9;<=?AIT!)Special commands for the shell framework.Causes the shell to exitCauses the shell to print an informative message. If a command name is specified, only information about that command will be displayed DInstructs the shell to do nothing; redisplay the prompt and continue!jAsk the shell to continue accepting input on another line, which should be appended to the given string"&Causes the shell to execute a subshell#.The type of subshells. The tuple consists of: LA function to generate the initial subshell state from the outer shell stateJA function to generate the outer shell state from the final subshell stateLA function to generate the shell description from the initial subshell state$8A record type which describes the attributes of a shell.&Commands for this shell'The style of shell commands(&The evaluation function for this shell)#Text to print when the shell starts*6The characters upon which the backend will break words+3A shell action to run before each prompt is printed,)A command to generate the prompt to print-A command to generate the secondary prompt. The secondary prompt is used for multi-line input. If not set, the regular prompt is used instead..2A set of handlers to call when an exception occurs/XIf set, this function provides completions when NOT in the context of a shell command0ZIf set, this provides the path to a file to contain a history of entered shell commands11The maximum number of history entries to maintain2lIf true, the history mechanism of the backend (if any) will be used; false will disable history features.3FThe type of shell commands. This monad is a state monad layered over IO. The type parameter stE allows the monad to carry around a package of user-defined state.4?The type of commands which produce output on the shell console.5~The type of results from shell commands. They are a modified shell state and possibly a shell "special" action to execute.6The type of a shell command. The shell description is passed in, and the tuple consists of (command name,command parser,command syntax document,help message document)The type of a command parser. The result of parsing a command.2A complete parse. A command function is returned.AAn incomplete parse. A word completion function may be returned.8_Datatype describing the style of shell commands. This determines how shell input is parsed.9Indicates that all input is to be interpreted as shell commands; input is only passed to the evaluation fuction if it cannot be parsed as a command.:tIndicates that commands are prefixed with a particular character. Colon ':' is the default character (a la GHCi).;'Commands consist of a single character.) !"#$%&'()*+,-./0123  4567   89:;) !"#$%,&'()*+-./0123  4567   89:;  !"#$%&'()*+,-./0123  4567   89:;None 9;<=?AIT<*The total context held by the shell, with 5 st being mutable and 4 immutable=Execute a shell action>%Output a tagged string to the console?Prints a regular output string@%Prints an informational output stringAPrints an error output stringB,Prints regular output with a line terminatorC<Prints an informational output string with a line terminatorD5Prints and error output string with a line terminatorEGet the current shell stateFSet the shell stateG*Apply the given funtion to the shell stateHSchedule a shell "special" action. Only the last call to this function will affect the shell's behavior! It modifies a bit of state that is overwritten on each call.I6Extract the current shell context for future use, see JJRun a shell with the supplied context, useful if you need to invoke a shell within a new IO context, for example when using  K(Update the mutable context of this shell<=>?@ABCDEFGHIJKL3<=>?@ABCDEFGHIJK3=>?B@CADEFGH<IJK<=>?@ABCDEFGHIJKL None 9;<=?AIT MThis class is used in the \ function to automaticly generate the command parsers and command syntax strings for user defined commands. The type of 'f' is restricted to have a restricted set of monomorphic arguments (, , , , , U, S, and Q) and the head type must be Sh st () [ f :: Int -> File -> Sh MyShellState () g :: Double -> Sh st () h :: Sh SomeShellState ()are all legal types, whereas: g bad1 :: a -> Sh (MyShellState a) () bad2 :: [Int] -> Sh MyShellState () bad3 :: Bool -> MyShellStateare not.N=A typeclass representing user definable completion functions.OActually generates the list of possible completions, given the current shell state and a string representing the beginning of the word.P@generates a label for the argument for use in the help displays.QzRepresents a command argument which is an arbitrary completable item. The type argument determines the instance of NB which is used to create completions for this command argument.S1Represents a command argument which is a usernameU1Represents a command argument which is a filenameWPrints the help message for this shell, which lists all avaliable commands with their syntax and a short informative message about each.X5Print the help message for a particular shell commandY2Creates a shell command which will exit the shell.Z:Creates a command which will print the shell help message.[+Creates a command to toggle a boolean value\]Creates a user defined shell commmand. This relies on the typeclass machenery defined by M.#MNOPQRSTUVWXYthe name of the commandZthe name of the command[ command name help messagegettersetter\the name of the commandthe command function. See M2 for restrictions on the type of this function. the help string for this command !"#$%&MNOPQRSTUVWXYZ[\MNOPQRSTUVWXYZ[\ !"#$%& None 9;<=?AIT]Run a shell. Given a shell description, a shell backend to use and an initial state this function runs the shell until it exits, and then returns the final state.^The default shell exception handler. It simply prints the exception and returns the shell state unchanged. (However, it specificaly ignores the thread killed exception, because that is used to implement execution canceling)_SCreates a simple subshell from a state mapping function and a shell description.'HExecute a subshell, suspending the outer shell until the subshell exits.()*+,-.]/0123456^_OA function to generate the initial subshell state from the outer shell state$A shell description for the subshell'"the description of the outer shellthe subshell to executethe shell backend to usethe backendstatethe current statethe modified state]^_ ()*+,-.]/0123456^_'None 9;<=?AIT`3A basic shell description with sane initial values.a_Creates a simple shell description from a list of shell commands and an evaluation function.`a3 !"#$%,&'()*+-./012456789:;MNOPQRSTUVWXYZ[\]^_`a3$%&'()*+,-./012`a^]YZ[\MUVSTQRNOP6#_WX89:; !"457`a7  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY Z [ \ ] ^ ^ _ _ ` ` a b c d e f g h ijklmnopqrstuvwxyz{|}~v     @ !" # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 7 8 9 : ; < = > ? @ A B C DE$Shellac-0.9.9-IuEZcrW0pWCGTyd3fpPGOASystem.Console.Shell.Backend"System.Console.Shell.Backend.BasicSystem.Console.ShellSystem.Console.Shell.ShellMonad#System.Console.Shell.ConsoleHandlerSystem.Console.Shell.PPrintSystem.Console.Shell.RegexSystem.Console.Shell.TypesSystem.TimeouttimeoutSystem.Console.Shell.CommandsSystem.Console.Shell.RunShell ShellBackend ShBackend initBackendshutdownBackend outputString flushOutput getSingleChargetInput addHistorysetWordBreakCharsgetWordBreakCharsonCancelsetAttemptedCompletionFunctionsetDefaultCompletionFunctioncompleteFilenamecompleteUsernameclearHistoryStatesetMaxHistoryEntriesgetMaxHistoryEntries readHistory writeHistory BackendOutput RegularOutput InfoOutput ErrorOutputCompletionFunctiondefaultWordBreakCharstemplateBackend basicBackend ShellSpecial ShellExit ShellHelp ShellNothingShellContinueLine ExecSubshellSubshellShellDescriptionShDesc shellCommands commandStyle evaluateFunc greetingTextwordBreakChars beforePromptpromptsecondaryPromptexceptionHandlerdefaultCompletions historyFilemaxHistoryEntrieshistoryEnabledSh OutputCommand CommandResult ShellCommandShellacException CommandStyle OnlyCommandsCharPrefixCommandsSingleCharCommands ShellContextrunShshellPut shellPutStr shellPutInfo shellPutErr shellPutStrLnshellPutInfoLn shellPutErrLn getShellSt putShellSt modifyShellSt shellSpecialextractContextrunWithContextupdateCommandResult$fMonadStatestShCommandFunction CompletioncompletecompletableLabel CompletableUsernameFile showShellHelp showCmdHelp exitCommand helpCommandtogglecmdrunShelldefaultExceptionHandlersimpleSubshellinitialShellDescriptionmkShellDescriptionwithControlCHandlerDocsNilCons SimpleDocSEmptySCharSTextSLineDocEmptyCharTextLineCatNestUnionColumnNestingPrettypretty prettyListlisttupled semiBraces encloseSep punctuatesepfillSephsepvsepcatfillCathcatvcatfold<><+><$><$$>softline softbreaksquotesdquotesbracesparensanglesbracketsencloselparenrparenlangleranglelbracerbracelbracketrbracketsquotedquotesemicoloncommaspacedot backslashequalsstringboolintintegerfloatdoublerational fillBreakfillwidthindenthangalignemptychartextline linebreakbesidenestcolumnnestinggroupflatten renderPrettyfits renderCompactdisplayS displayIOputDochPutDocspaces indentation $fShowDoc $fPrettyMaybe $fPretty(,,) $fPretty(,)$fPrettyDouble $fPrettyFloat$fPrettyInteger $fPrettyInt $fPrettyChar $fPrettyBool $fPretty() $fPrettyDoc $fPretty[]baseGHC.Showshow RegexContext TopContext AltContext ConcatContext StarContextRegexEpsilonLabelTerminalExternalConcatAltStar showRegexparenIf matchesRegex matchRegexrunRegex strEpsilon strTerminal strConcatstrAltstrStarstrSpacestrAnyaltProj starRegex plusRegexoptRegex manyRegex stringRegex anyOfRegex spaceRegexmaybeSpaceRegexmaybeSpaceBefore spaceAftermaybeSpaceAfter signRegexintRegex floatRegex boolRegex wordsRegex wordRegex $fShowRegexbasicGetSingleChar basicGetInput basicOutput CommandParserCommandParseResult CompleteParseIncompleteParseunShCommandCompleterFilenameCompleterUsernameCompleterOtherCompleterghc-prim GHC.TypesInt integer-gmpGHC.Integer.TypeIntegerFloatDoubleGHC.BaseString parseCommand commandSyntax maybePrefixgetShellCommandscommandHelpDocdoParseCommand commandsRegexonlyCommandsRegexprefixCommandsRegexsingleCharCommandRegex$fCommandFunction(->)st$fCommandFunction(->)st0$fCommandFunction(->)st1$fCommandFunction(->)st2$fCommandFunction(->)st3$fCommandFunction(->)st4$fCommandFunction(->)st5$fCommandFunction(->)st6$fCommandFunctionShst runSubshellInternalShellStateevalVar evalThreadVar cancelHandler backendStatecontinuedInput executeShell handleINTcompletionFunctioncompleteCommands maximalPrefix loadHistory saveHistory shellLoop