R      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQNone+M6Indicates that some string was not able to be parsed. R Creates a NoParseError out of a S.  Variant of  that uses T and U for (de)serialization. +If the file's content's can't be parsed, a  will be thrown.  Variant of ' that uses JSON for (de)serialization. +If the file's content's can't be parsed, a  will be thrown. Tries to read a configuration from file. If the file is missing, a default instance is written to file and returned. The following exceptions may be thrown:  IOExceptiona, if the IO operations associated with reading or creating the configuration file fail, and An exception of type eN if the configuration file is present, but its contents can't be parsed. R Path of the configuration file.  Parser for the file's contents. Encoder for the default value. If the given configuration file does not exist, a default value will be serialized using this function. VRV Safe-Inferred8Extracts a result from the current state. Defined as get1 f = liftM f get. -Extracts two results from the current state. /Extracts three results from the current state. .Extracts four results from the current state. .Extracts five results from the current state. -Extracts six results from the current state. /Extracts seven results from the current state. /Extracts eight results from the current state.     None+3MT" A verbatim Text whose Read instance simply returns the read string, as-is. This is useful for askers which ask for strings without quotes. Represents a failure during the running of an asking function. Either the input was incorrect in some way, or the process was aborted by the user. #The input was aborted by the user. /No action was appropriate for the given input. .An incorrect number of parameters was passed. %The parsed value failed a predicate. $The input wasn't able to be parsed. hThe description of an 'ask for user input'-action. The type parameters are the used monad (typically W or ExceptTb), the type of the read value and the type of the error that is thrown in case of failures. 3The components are a prompt, a parser, and a predicate that the parsed value must fulfil. The predicate, being monadic, can perform arbitrarily complex tests, such as checking whether a given date is in the future, whether an item is in a database, whether a file with a given name exists, etc. (The prompt to be displayed to the user.  The parser for the input value. ^The predicate which the input, once read, must fulfill. The Left side is an error message. BA parser which either returns a parsed value or an error message. )A predicate which a value has to fulfil.  A prompt. >An error message indicating that a value failied a predicate. CAn error message indicating that a value wasn't able to be parsed. Prints a string to stderr. !=Prints a string, followed by a newline character, to stderr. "Prints > $ and asks the user to input a line. #SPrints its first argument and, in the same line, asks the user to input a line. $TThe same as prompt, but aborts as soon as the user presses a given key (commonly '\ESC'S). This function temporarily tries to set the buffering mode to NoBuffering via :, which may not be supported. See the documentation of  for details. %Creates a general  with a custom parsing function and a predicate that the parsed value has to pass. If either the parsing or the predicate fail, one of the given error messages is displayed. & Creates an / which only cares about the type of the input. 'ZAn asker which asks for an optional value. If only whitespace is entered (according to X), it returns YQ without further parsing or checking; otherwise, it behaves identically to ). (A parser based on Z7. This suffices for the parsing of most data types. )Creates a general  with Z as its parser. Using A is perfectly fine for most values, but it has two drawbacks: sThe user input is unpacked into a String and then parsed. This can incur a performance hit for large inputs. 9A Read-instance must be available for the expected type. * Creates an = based on Read which just cares about the type of the input. + Creates an # which takes its input verbatim as [C. The input thus only has to pass a predicate, not any parsing. ,9An asker based on Read which asks for an optional value. -AExecutes an Asker. If the process fails, an exception is thrown. .See -%. Always reads the input from stdin. ask' a = ask a Nothing / Executes an [. If the Text argument is Nothing, the user is asked to enter a line on stdin. If it is Just x, x is taken to be input. 0pRepeatedly executes an ask action until the user enters a valid value. Error messages are printed each time. \Read-instance for  8. Wraps the given value into quotes and reads it a a [. '  !"#$%&'()*+Predicate error message. The predicate. ,-./0\]^3_`abcdefghijklm  !"#$%&'()*+,-./0$ !"#$%&'()*+, -./0  !"#$%&'()*+,-./0\]^None+3:HM1*A REPL command, possibly with parameters. 33The short name of the command. Purely informative. 4sReturns whether the first part of an input (the command name) matches a the command. The simplest form is ((==) . getPart) s@ for some string s, but more liberal matchings are possible. 5A description of the command. 6VRuns the command with the input text as parameter, returning the unconsumed input. 7lToo few parameters were given to a command. The first value is the minium, the second the actual number. 9nToo many parameters were given to a command. The first value is the maximum, the second the actual number. ;The input of a command was malformed and could not interpreted. I.e. the input contained inadmissible characters, or quotes were mismatched. The [% argument contains the parser error. =,Generic error related to command execution. ?VRuns the command with the input text as parameter, discarding any left-over input. @kRuns the command with the input text as parameter. If any input is left unconsumed, an error is thrown. A Takes a list xs3 and executes the first command in a list whose 4 matches the input.  Note that the resultant command cs 6* should only be executed with an input t& if 'commandTest c t' == True', where t' is either head (readArgs t) or mempty if t2 is empty. Otherwise, the result is undefined. BAdds a list of possible subcommands after a command (that should leave some input unconsumed). Ignoring all the required parameters for a moment, !subcommand x xs = x >>- oneOf xs CMSplits and trims the input of a command. If the input cannot be parsed, a MalformedCommand exception is thrown.  - * Format  Any non-whitespace sequence of characters is interpreted as one argument, unless double quotes (") are used, in which case they demarcate an argument. Each argument is parsed as a haskell string literal (quote-less arguments have quotes inserted around them). $Arguments are parsed using parsec's  stringLiterale (haskell-style), meaning that escape sequences and unicode characters are handled automatically. D`Gets the first part of a command string, or the empty string, if the comand string is empty. EhSurrounds an argument in quote marks, if necessary. This is useful when arguments were extracted via Cn, which deletes quote marks. Quotes are placed around the input iff it is empty or contains whitespace. F&Creates a command without parameters. G&Creates a command with one parameter. H'Creates a command with two parameters. I)Creates a command with three parameters. J(Creates a command with four parameters. K(Creates a command with five parameters. L'Creates a command with six parameters. M)Creates a command with seven parameters. N)Creates a command with eight parameters. O?Creates a command with a list of parameters. The first list necc of cs indicates the necessary parameters; the user must at least provide this many. The second list opt contains ms for additional, optional parameters, and may be infinite. If the number of passed parameters exceeds length necc + length opt , or if any " fails, the command returns an . P=Prints out a list of command names, with their descriptions. QkRuns a REPL based on a set of commands. For a line of input, the commands are tried in following order: the "exit" command, all regular commands, and then the "unknown" command. -123456789:;<=>nop?@ACommand name. Command description. BThe root command. >The subcommands that may follow it. This list must be finite. CDEFCommand name. Command test. Command description. Command function. It will receive the first part of the input (customarily the command name), or the empty string if the input only contained whitespace. GCommand name. Command test. Command description Whether the command can ask for input. ^If True, running the command will run the Asker's IO action if not enough input is provided. If False a  ParamNumError will be thrown.  for the first parameter. Command function. HCommand name. Command test. Command description 'Whether the command can ask for input.  for the first parameter.  for the second parameter. Command function. ICommand name. Command test. Command description 'Whether the command can ask for input.  for the first parameter.  for the second parameter.  for the third parameter. Command function. J Command name. Command test. Command description 'Whether the command can ask for input.  for the first parameter.  for the second parameter.  for the third parameter.  for the fourth parameter. Command function. K Command name. Command test. Command description 'Whether the command can ask for input.  for the first parameter.  for the second parameter.  for the third parameter.  for the fourth parameter.  for the fifth parameter. Command function. L Command name. Command test. Command description 'Whether the command can ask for input.  for the first parameter.  for the second parameter.  for the third parameter.  for the fourth parameter.  for the fifth parameter.  for the sixth parameter. Command function. M Command name. Command test. Command description 'Whether the command can ask for input.  for the first parameter.  for the second parameter.  for the third parameter.  for the fourth parameter.  for the fifth parameter.  for the sixth parameter.  for the seventh parameter. Command function. N Command name. Command test. Command description 'Whether the command can ask for input.  for the first parameter.  for the second parameter.  for the third parameter.  for the fourth parameter.  for the fifth parameter.  for the sixth parameter.  for the seventh parameter.  for the eighth parameter. Command function. OCommand name. Command test. Command description VWhether the command can ask for input. This only affects the necessary parameters.  s for the necessary parameters. s for the optional parameters. PqQThe regular commands. .The "exit" command which terminates the loop. HThe command that is called when none of the others match. This one's 4 is replaced with  const True. <The asker to execute before each command (i.e. the prompt). }Handlers for any exceptions that may arise. Generally, you will want to handle at least the exceptions of this module (=, ;, 9, 7), and whatever the  can throw. gAsks the user repeatedly for input, until the input matches the command test of the "exit" command. rstuvwxy!123456789:;<=>?@ABCDEFGHIJKLMNOPQ!123456?@ABQ=>;<789:CDEPFGHIJKLMNO$123456789:;<=>nop?@ABCDEFGHIJKLMNOPqQrstuvwxyz       !"#$%&'()*+,-./01234567789:;<<==>>??@ABCDEFGHIJKLMNOPQRSTUVWXYWZ[\]^_W`aWbcWdefghijklmklnkloklpklqklrklskltkluklvklwklxklyklzkl{|}~repl-toolkit-0.4.0.0System.REPL.ConfigSystem.REPL.State System.REPLSystem.REPL.Command System.IO hSetBuffering Data.Read readMaybe NoParseErrorreadConfigShowreadConfigJSONreadConfigFileget1get2get3get4get5get6get7get8Verbatim fromVerbatim AskFailure AbortFailureNothingFoundFailure ParamFailurePredicateFailure TypeFailureAsker askerPrompt askerParseraskerPredicateParser Predicate PromptMsgPredicateErrorMsg TypeErrorMsgputErrputErrLnpromptprompt' promptAbortaskerP typeAskerP maybeAskerP readParserasker typeAsker predAsker maybeAskeraskask' askEither untilValidCommand commandName commandTest commandDescrunPartialCommandTooFewParamsErrorTooManyParamsErrorMalformedParamsErrorSomeCommandError runCommandrunSingleCommandoneOf subcommandreadArgsgetNamequoteArg makeCommand makeCommand1 makeCommand2 makeCommand3 makeCommand4 makeCommand5 makeCommand6 makeCommand7 makeCommand8 makeCommandNsummarizeCommandsmakeREPL noParseErrorsystem-filepath-0.4.13.2Filesystem.Path.InternalFilePathbaseGHC.ShowShowGHC.ReadRead$fExceptionNoParseErrorghc-prim GHC.TypesIO GHC.UnicodeisSpace Data.MaybeNothing Text.Read text-1.2.0.4Data.Text.Internal.LazyText$fReadVerbatim$fShowAskFailure$fExceptionAskFailureListLike-4.2.0Data.ListLike.IO appendFile writeFilereadFileinteractputStrLnputStr getContentsgetLine hPutStrLnhPutStrhGetNonBlockinghGet hGetContentshGetLine ListLikeIO++commandErrorUpcastcommandErrorDowncastaskC $fBindCommand$fApplyCommand$fFunctorCommand$fExceptionTooFewParamsError$fExceptionTooManyParamsError$fExceptionMalformedParamsError$fExceptionSomeCommandError$fShowSomeCommandError