úΓ`ŽkA      !"#$%&'()*+,-./0123456789:;<=>?@ 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 A 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 B), it returns CQ without further parsing or checking; otherwise, it behaves identically to $. #A parser based on D7. This suffices for the parsing of most data types. $Creates a general  with D 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 EC. 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. +pRepeatedly executes an ask action until the user enters a valid value. Error messages are printed each time. FRead-instance for 8. Wraps the given value into quotes and reads it a a E. '  !"#$%&Predicate error message. The predicate. '()*+FGH3IJKLMNOPQRSTUVW  !"#$%&'()*+$  !"#$%&' ()*+   !"#$%&'()*+FGHNone+3,*A REPL command, possibly with parameters. .3The short name of the command. Purely informative. /LReturns whether a string matches a command name. The simplest form is s==@ for some string s, but more liberal matchings are possible. 0A description of the command. 1$The number of parameters, if fixed. 23Runs the command with the input text as parameter. 3~Prints information (the command name, description and, if given, the number of parameters) about a command to the console. 4˙‡Splits and trims the input of a command. 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). If the number of quotes in the input is not even, the operating will fail. $Arguments are parsed using parsec's  stringLiterale (haskell-style), meaning that escape sequences and unicode characters are handled automatically. 5OTakes a line of text and a command. If the text matches the given command's /), the command is run with it. If not, C is returned. XVReturns an error message if an unexpected number of parameters have been supplied. YChecks the number of parameters before executing a monadic function. Only AskFailures (and IOExceptions) will be thrown in this function. 6hSurrounds an argument in quote marks, if necessary. This is useful when arguments were extracted via 4u, which deletes quote marks. Quotes are placed around the input iff it doesn't begin with a quote mark ("). 4 and 6i are inverse up to suitable isomorphism, i.e. if 'readArgs orig = (Right res)', then it holds that =readArgs orig = readArgs $ intercalate " " $ map quoteArg res 7&Creates a command without parameters. 8&Creates a command with one parameter. 9'Creates a command with two parameters. :)Creates a command with three parameters. ;(Creates a command with four parameters. <(Creates a command with five parameters. =(Creates a command with four parameters. >?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  . ?vTakes an input and tries to run it against a list of commands, trying the out in sequence. The first command whose /@ returns True is executed. If none of the commands match, NothingFoundFailure is thrown. @=Prints out a list of command names, with their descriptions. Z[\],-./012^345XThe command name. The given input. "The minimum number of parameters. QThe maximum number of parameters. May be infinite if there is no upper bound. !The kind of error that occurred. YThe command name. ,The raw input (including the command name). @The minimal number of parameters, excluding the command's name. tThe maximal number of parameters, excluding the command's name. This may be infinity if there is no upper bound.  The command. >Result. If too many parameters were passed, this will be a ParamNumFailure. 67Command name. Command test. Command description. The actual command. 8Command name. Command test. Command description  for the first parameter. 9Command name. Command test. Command description  for the first parameter.  for the second perameter. :Command name. Command test. Command description  for the first parameter.  for the second perameter.  for the third parameter. ;Command name. Command test. Command description  for the first parameter.  for the second perameter.  for the third parameter.  for the fourth parameter. <Command name. Command test. Command description  for the first parameter.  for the second perameter.  for the third parameter.  for the fourth parameter.  for the fifth parameter. = Command name. Command test. Command description  for the first parameter.  for the second perameter.  for the third parameter.  for the fourth parameter.  for the fifth parameter.  for the sixth parameter. >Command name. Command test. Command description  s for the necessary parameters. s for the optional parameters. ?The user's input. The command library. @_`,-./0123456789:;<=>?@,-./01235?@46789:;<=>Z]\[,-./012^345XY6789:;<=>?@_`a      !"#$%&'()*+,-./01223456789:;<=>?@ABCDEFGHIJKILMINOPQRSTUVWUVXUVYUVZUV[UV\UV]UV^UV_UV`UVaUVbUVcUVdUVefghijklmnorepl-toolkit-0.3.0.0System.REPL.State System.REPLSystem.REPL.Command System.IO hSetBuffering Data.Read readMaybeget1get2get3get4get5get6get7get8Verbatim fromVerbatim AskFailure AbortFailureNothingFoundFailure ParamFailurePredicateFailure TypeFailureAsker askerPrompt askerParseraskerPredicateParser Predicate PromptMsgPredicateErrorMsg TypeErrorMsgputErrputErrLnpromptprompt' promptAbortaskerP typeAskerP maybeAskerP readParserasker typeAsker predAsker maybeAskeraskask' askEither untilValidCommand commandName commandTest commandDesc numParameters runCommand commandInforeadArgsrunOncequoteArg makeCommand makeCommand1 makeCommand2 makeCommand3 makeCommand4 makeCommand5 makeCommand6 makeCommandNcommandDispatchsummarizeCommandsghc-prim GHC.TypesIObase GHC.UnicodeisSpace Data.MaybeNothing Text.Read text-1.2.0.4Data.Text.Internal.LazyText$fReadVerbatim$fShowAskFailure$fExceptionAskFailureListLike-4.1.1Data.ListLike.IO appendFile writeFilereadFileinteractputStrLnputStr getContentsgetLine hPutStrLnhPutStrhGetNonBlockinghGet hGetContentshGetLine ListLikeIOparamErr checkParams ParamNumError TooManyParams ExactParamsNoParams++$fExceptionParamNumError$fFunctorCommand